看代码:
int i = 5;
if (i = 0)
{
printf ("Got here\n");
}
Run Code Online (Sandbox Code Playgroud)
关于什么将被打印,C标准有什么要说的?或者更一般地说,分配首先发生还是比较?
dre*_*lax 10
§6.8.4说if选择语句的语法是:
if ( expression ) statement
在本节中,它提到如果表达式将une等于0,则statement执行.因此,必须先评估表达式,然后才能将其与0进行比较.i = 0表达式的计算结果为0.有关进一步的参考,请参见§6.5"表达式",关于§6.5.16"赋值运算符",特别注意此摘录:
赋值运算符将值存储在左操作数指定的对象中.赋值表达式在赋值后具有左操作数的值,但不是左值.
首先是作业,因为它是评估的一部分.赋值的表达式返回指定的值,因此表达式的计算结果为false.
| 归档时间: |
|
| 查看次数: |
2884 次 |
| 最近记录: |