C语言 为什么这个函数不返回char数据类型?



//素数函数

#include <stdio.h>
#include <math.h>
char Premier(int N){
int i;
char notpremier="Nombre n'est pas premier"; //Number is prime
char premier="Nombre est premier"; //Number isn't prime
for(i=2;i<=sqrt(N);i++){
if(N % i==0){
return notpremier;
}
else{
return premier;
}
}
}
int main() {
printf("%c",Premier(10));
return 0;
}

但是,当我选择返回int数据类型时,它可以完美地工作。

对于初学者,如果用户传递的值小于4,该函数将不返回任何值。

其次,您试图用类型为char *的表达式初始化类型为char的对象,因为用作右操作数的字符串字面值被隐式转换为指针。

注释也是无效的。

char notpremier="Nombre n'est pas premier"; //Number is prime
char premier="Nombre est premier"; //Number isn't prime

必须移动else语句的子语句

else{
return premier;
}

至少你需要写

char * Premier(int N){

char * notpremier="Nombre n'est pas premier"; //Number isn't prime
char * premier="Nombre est premier"; //Number is prime

for(i=2;i<=sqrt(N);i++){
if(N % i==0){
return notpremier;
}
}
return premier;

但也考虑到01不是素数。函数参数应该是无符号整数类型,例如unsigned int,而不是有符号整数类型int

而不是返回字符串文字,函数应该返回一个整数:1 -传递的数字是素数,0 -传递的数字不是素数。

最新更新