我正在 K&R 学习 C 编程,在尝试示例程序时,我遇到了以下代码片段:
#include <stdio.h>
int main(){
int c;
while((c = getchar()) != EOF){
putchar(c);
}
return 0;
}
并做了一些小小的修改:
#include <stdio.h>
int main(){
while((int c = getchar()) != EOF){
putchar(c);
}
return 0;
}
我期望首先执行 getchar() 函数,返回一个 int 值,该值将存储在整型变量 c 中,随后将计算 c != EOF 表达式。然而,事实似乎并非如此。有人可以解释为什么它不是这样工作的吗?
在 C 语言中,声明用于告知编译器标识符(名称)的含义。它们指定名称是某种类型的变量,或者是类型的名称,或者是结构的标签,等等。
表达式用于指定值的计算。
它们是不同的东西。声明不是表达式的子部分。您不能在
if
语句的测试条件中使用声明。
(在表达式中使用类型的机会有限,例如在
sizeof
表达式的操作数中,并且这些类型可能部分使用声明语法。尽管如此,它们不是声明。)