if(i-2)在C语言中的含义是什么?

时间:2017-06-18 00:26:07

标签: c if-statement conditional

因此,除了if声明之外,我理解代码中的所有内容 - if(i-2)

for (i = -1, j = 0; i < 4; i++, j++)
    if (i - 2) 
       printf("%d\t", j * (i + 2));

任何人都可以解释这个if声明的含义,它对printf有什么影响吗?感谢。

3 个答案:

答案 0 :(得分:2)

如果控制表达式为真,则执行if下的语句。在C中,计算结果为0的表达式被视为false,而任何其他值都被视为true。

所以if (i-2)表示如果printf非零,即i-2不等于2时i将被执行。

答案 1 :(得分:1)

在C中,整数在if语句中被视为布尔值:

  • 0为假
  • 非零是真的

因此if (i-2)相当于if (i != 2)

答案 2 :(得分:0)

在c中,任何值都可以在if语句中使用,而不仅仅是布尔表达式。这将转化为表达式!= 0.通常这是针对样式指南的,因为它可能会让人感到困惑和容易出错。

以下两个是等效的

if (val) ...
if (val != 0) ...

所以在你的情况下

if (i - 2)
i2

时,除i-2之外的0的每个值都为真