为什么C语言中的布尔表达式没有变量声明?

问题描述 投票:0回答:1

我正在 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
1个回答
0
投票

在 C 语言中,声明用于告知编译器标识符(名称)的含义。它们指定名称是某种类型的变量,或者是类型的名称,或者是结构的标签,等等。

表达式用于指定值的计算。

它们是不同的东西。声明不是表达式的子部分。您不能在

if
语句的测试条件中使用声明。

(在表达式中使用类型的机会有限,例如在

sizeof
表达式的操作数中,并且这些类型可能部分使用声明语法。尽管如此,它们不是声明。)

© www.soinside.com 2019 - 2024. All rights reserved.