我无法理解“if condition”在这种情况下如何与增量/减量运算符一起使用:
#include<stdio.h>
void main()
{
int n=0;
if(n++)
{
printf("C-DAC");
}
else if(n--)
{
printf("ACTS");
}
}
它的输出是ACTS。
IF情况发生了什么?
答案 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