为什么这段代码片段会被编译?

时间:2010-01-08 16:50:49

标签: c

为什么以下代码会编译?

#include <stdio.h>

int main(void) {
    getchar;
}

3 个答案:

答案 0 :(得分:28)

因为函数名是函数指针的别名,这些函数本身的值与整数非常相似。这在语义上非常类似于

#include <stdio.h>

int main(void) {
    42;
}

这是有效但毫无意义。

答案 1 :(得分:13)

1;编译的原因相同,getchar只是函数的地址。评估结果,然后丢弃。在语言规范中,它被称为“表达式声明”;

答案 2 :(得分:2)

C很奇怪,这段代码也编译,但它是段错误 记录中,它是C中最小的段错误 历史。

main;