因此,除了if
声明之外,我理解代码中的所有内容 - if(i-2)
:
for (i = -1, j = 0; i < 4; i++, j++)
if (i - 2)
printf("%d\t", j * (i + 2));
任何人都可以解释这个if
声明的含义,它对printf
有什么影响吗?感谢。
答案 0 :(得分:2)
如果控制表达式为真,则执行if
下的语句。在C中,计算结果为0的表达式被视为false,而任何其他值都被视为true。
所以if (i-2)
表示如果printf
非零,即i-2
不等于2时i
将被执行。
答案 1 :(得分:1)
在C中,整数在if
语句中被视为布尔值:
因此if (i-2)
相当于if (i != 2)
。
答案 2 :(得分:0)
在c中,任何值都可以在if
语句中使用,而不仅仅是布尔表达式。这将转化为表达式!= 0.通常这是针对样式指南的,因为它可能会让人感到困惑和容易出错。
以下两个是等效的
if (val) ...
if (val != 0) ...
所以在你的情况下
if (i - 2)
当i
为2
时,除i-2
之外的0
的每个值都