我目前正在学习 C,在一张幻灯片中教授指出,添加到表达式中的分号使其成为一个声明。另一方面,它提到所有赋值都是表达式。即使这些分配需要额外的行并且必须用分号分隔。
看这里: 整数a、b、c; a = b = c = 10;
int a,b,c;
b = 2;
c = 3;
a = b + c;
这些会被视为所有表达式吗?或声明
尝试查看资源并得到相互矛盾的答案
你的老师说的是正确的,但前提是你以特殊的方式阅读它。
C 中的赋值是一个表达式,因为您可以说
f( x = 5 )
,在这种情况下,5 被分配给 x,但这是一个计算结果为 5 的表达式,然后该值作为参数传递给 y()
。请注意,大多数程序员认为这令人困惑,并且通常不会通过代码审查。
同样,人们经常这样做
if( booleanVariable = booleanFunction() ) { ... }
,这也被认为是令人困惑的,尽管因为它经常使用而稍微少一些。
现在,这也是 C 语言中的一个表达式:
a
。 (其中 a
之前已声明为某种类型的变量。)通过在其后面写入分号,您可以将其用作表达式,如下所示:
int a = 5;
a;
printf( "Hello" );
这是有效的 C。它应该产生一个警告(“语句无效”),如果没有,则意味着您正在尝试编写代码,而没有首先弄清楚如何在编译器上启用所有警告,但是那是另一个故事了。事实是,如果您忽略警告,这是可以编译并运行的有效 C。