C语言中if(i-2)是什么意思?

what does if(i-2) mean in C language?

所以,除了这个 if 语句 - if(i-2) :

我理解代码中的所有内容
for (i = -1, j = 0; i < 4; i++, j++)
    if (i - 2) 
       printf("%d\t", j * (i + 2));

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

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

  • 0 为假
  • 非零为真

所以 if (i-2) 等价于 if (i != 2).

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

所以 if (i-2) 意味着 printf 将在 i-2 非零时执行,即当 i 不等于 2.

在 c 中,任何值都可以在 if 语句中使用,而不仅仅是布尔表达式。这会变成表达式 != 0。这通常是违反风格指南的,因为它可能会造成混淆并容易出错。

下面两个是等价的

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

所以在你的情况下

if (i - 2)
i-20

时,

对于 i 的每个值都为真,但 2 除外