gpt*_*916 0 c pointers return function while-loop
我不确定为什么下面的代码不起作用.
我尝试用gcc编译它gcc -Wall -o test test.c,它给出了警告信息:控制到达非void函数的结束.
但是我找不到错误所以我试图编译它忽略警告消息,并在使用./test 1234321编译后使用它来测试程序gcc -o test ispalidrome.c
但不是返回0(它应该由我理解,因为它没有触发任何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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
你的main功能return 0在最后很明显错过了.
它返回的随机值是返回时在返回值寄存器(eax在x86上)发生的任何事情main.
永远不要关闭-Wall,永远不要忽视警告.他们是你的朋友.
正如Jim Balter和LưuVĩnhPhúc所提到的那样,return 0它在C99中是可选的.