if(i ++)条件如何工作?

时间:2012-06-15 11:49:30

标签: c if-statement boolean-expression

  

可能重复:
  Post Increment and Pre Increment concept?

我无法理解“if condition”在这种情况下如何与增量/减量运算符一起使用:

#include<stdio.h> 
void main() 
{ 
  int n=0; 
  if(n++) 
  { 
    printf("C-DAC"); 
  } 
  else if(n--) 
  { 
    printf("ACTS"); 
  } 
}

它的输出是ACTS。

IF情况发生了什么?

10 个答案:

答案 0 :(得分:19)

if (n++)它检查n是否不等于零,然后递增n

else if (n--)它检查n是否不等于零,然后递减n

您的第一个if语句不正确(因为n为零),然后n递增,并检查else if语句(n是此时等于1),if (1)为真,printf("ACTS")称为

答案 1 :(得分:3)

n++n--发布 - 递增/递减操作。

这意味着变量的值首先用于当前表达式中的评估,然后才改变,(之后递增/递减)。

0在布尔表达式中表示为FALSE。由于n最初为0,因此第一个if中的测试失败,并评估else子句。

此时n由于第一次测试中的1而变为n++,因此这会导致此测试成为真实且

printf("ACTS"); 

要执行。

答案 2 :(得分:3)

if(0 ++)==&gt;如果(0) 否则如果(1--)==&gt;否则如果(1)

所以打印ACTS

答案 3 :(得分:2)

int n=0; 
if(n++)

含义:检查然后按1递增。

int n=0; 
if(++n)

含义:递增1然后检查。

答案 4 :(得分:2)

int总是给出true,除非它为零。 postincrement运算符i++在检查后递增i变量。 如果您使用了preincrement运算符++i,则会在检查之前进行增量。

答案 5 :(得分:2)

在检查IF部分时, n 的值为“ 0 ”。而且由于i++, ' n '增加 1 。所以,现在 n 的值是 1 。因此,在输入ELSE部分时,由于 n 的值为 1 ,它会执行ELSE部分。 而且你得到了ELSE部分的输出。

答案 6 :(得分:1)

它首先检查<{1}}和之后的条件它会增加n的值

答案 7 :(得分:1)

++--运算符不仅会修改值,还会返回值。行为因位置而异:++var增加并返回增加的值,而var++增加但返回旧值。

答案 8 :(得分:1)

因为我是0. ++i会在评估前递增,i++

之后递增

答案 9 :(得分:0)

编译器以从左到右的方式读取命令。首先它意味着检查条件是否为假

if (n) 

然后递增/递减

 n = n +/- 1