我正在编写 C 脑预告片:编写标准的 Hello-World 程序,不带分号。
到目前为止,我最好的答案是:
int main(void)
{
if (printf("Hello World!\n"), exit(0), 0)
{
/* do nothing */
}
}
但我不明白为什么我没有得到编译器错误(Visual Studio):
error C4716: 'main' : must return a value
我尝试了其他声明了返回类型但缺少返回语句的函数,并得到了这个编译器错误。
请注意,我也尝试过:
int foo(void)
{
if (printf("Hello World!\n"), exit(0), true)
{
/* do nothing */
}
}
int main(void)
{
foo();
}
并且不要在 foo 上得到编译器错误。如果我删除“exit(0)”,我会得到编译器错误。显然编译器知道“退出”是一个特殊功能?这对我来说似乎很奇怪。