我不确定为什么下面的代码不起作用。
我尝试使用 gcc 编译它 gcc -Wall -o test test.c
,它给我警告信息:control reaches end of non void function。
但我找不到错误,所以我尝试忽略警告消息进行编译,并在使用 gcc -o test 编译后使用
./test 1234321
测试程序ispalidrome.c
但是它没有返回 0(根据我的理解,它应该返回 1,因为它没有触发任何 if 语句返回 1),而是返回一个随机值,46、52、84 等。
程序背后的主要逻辑完全符合要求,我只是不知道为什么它没有正常退出。
#include <stdio.h>
int main(int argc, char **argv){
if (argc != 2){
fprintf(stderr, "Usage: %s \"string\"", argv[0]);
return 1;
}
else{
int i = 0;
while( '\0' != argv[1][i] ) i++;
char *start=argv[1];
char *end=&start[i-1];
while (start<end){
if (*start != *end){
break;
return 1;
}
printf("%c is the same as %c\n",*start, *end);
start =start+1;
end=end-1;
}
}
}
最佳答案
您的 main
函数很明显在末尾缺少一个 return 0
。
当 main
返回时,它返回的随机值是返回值寄存器(x86 上的 eax
)中的任何值。
切勿关闭 -Wall
,切勿忽略警告。他们是你的 friend 。
关于c - 函数不会返回 0,找不到逻辑错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22006084/