getchar()在scanf don';T

getchar()在scanf don';T,c,scanf,getchar,C,Scanf,Getchar,将void更改为int都是未定义的行为,因为main应返回C标准定义的int。当您检查其返回代码时,这一点尤为重要 将定义更改为: #include<stdio.h> int main(void) { char ch; ch=getchar(); printf("%d",ch); return 0; } 请注意,main不需要显式返回任何值。就好像你有返回0在末尾。但如果您使用的是C89,则需要显式返回值(或调用exit)。这两种行为都是未定义的行为,因为main应返回C标准定义的

void
更改为
int
都是未定义的行为,因为
main
应返回C标准定义的
int
。当您检查其返回代码时,这一点尤为重要

将定义更改为:

#include<stdio.h>
int main(void) {
char ch;
ch=getchar();
printf("%d",ch);
return 0;
}

请注意,
main
不需要显式返回任何值。就好像你有
返回0在末尾。但如果您使用的是C89,则需要显式返回值(或调用
exit
)。

这两种行为都是未定义的行为,因为
main
应返回C标准定义的
int
。当您检查其返回代码时,这一点尤为重要

将定义更改为:

#include<stdio.h>
int main(void) {
char ch;
ch=getchar();
printf("%d",ch);
return 0;
}
请注意,
main
不需要显式返回任何值。就好像你有
返回0在末尾。但如果您使用的是C89,则需要显式返回值(或调用
exit
)。

您的
main()
应返回
int
,而不是
void
,如
n1570
标准中所规定

它应定义为int返回类型,且无参数: int main(void){/*…*/}

将错误代码块替换为

int main(void)
{
    ...
}
您的
main()
应返回
int
,而不是
void
,如
n1570
标准中指定的那样

它应定义为int返回类型,且无参数: int main(void){/*…*/}

将错误代码块替换为

int main(void)
{
    ...
}

main
函数应该声明为返回
int
。这是C规范的一部分。不这样做会导致失败。有关更多信息,请参见示例。这给了我错误NZEC(非零退出代码),这是您使用
void main()得到的结果
你有没有碰巧从编译器那里得到任何警告?我在hacker earth的online judge上运行了这个程序…在那里我得到了执行错误,但代码编译成功。应该声明
main
函数返回
int
。这是C规范的一部分。不这样做会导致失败。有关更多信息,请参见示例。这给了我错误NZEC(非零退出代码),这是您使用
void main()得到的结果
你有没有碰巧从编译器那里得到任何警告?我在hacker earth的online judge上运行了这个程序……在那里我得到了执行错误,但代码编译成功。它通过这样做以及将
char ch
更改为
int ch
来工作,正如@user3121023所建议的那样,还有一个问题@usr,因为我正在学习c哪个标准如果你能推荐的话,我应该用它吗?我该如何学习它?如果你能推荐的话,有一天我会像你一样回答谢谢!如果可以,尝试使用最新的标准C11(但C11的支持/使用并不普遍)。否则,我建议遵循C99。u wud推荐的任何c语言学习的好资源K&R第二版都适合练习(这本书本身已经过时)。我听说“C编程:一种现代方法”相当不错(包括c99)。但根据你的水平,你也可能喜欢“C如何编程(第8版)”。但其他人可能会有不同的看法。你可以搜索和阅读(产品质量)其他教科书。它通过这一点以及将
char ch
更改为
int ch
来工作,正如@user3121023所建议的那样。还有一个问题@usr,因为我正在学习c,我应该使用哪种标准,我应该如何学习它?如果你能推荐一些好的来源,以便有一天我能像你一样回答谢谢!如果可以,尝试使用最新的标准C11(但C11的支持/使用并不普遍)。否则,我建议遵循C99。u wud推荐的任何c语言学习的好资源K&R第二版都适合练习(这本书本身已经过时)。我听说“C编程:一种现代方法”相当不错(包括c99)。但根据你的水平,你也可能喜欢“C如何编程(第8版)”。但其他人可能会有不同的看法。你可以搜索和阅读其他教科书的质量。
int main(void)
{
    ...
}
int  main() {
        char ch;
        ch=getchar();
        printf("%d",ch);
        return 0;
}