可能重复:
后增量和前增量概念?
在这种情况下,我无法理解“if 条件”如何与增量/减量运算符一起使用:
#include<stdio.h>
void main()
{
int n=0;
if(n++)
{
printf("C-DAC");
}
else if(n--)
{
printf("ACTS");
}
}
它的输出是ACTS。
IF 条件下发生了什么?
可能重复:
后增量和前增量概念?
在这种情况下,我无法理解“if 条件”如何与增量/减量运算符一起使用:
#include<stdio.h>
void main()
{
int n=0;
if(n++)
{
printf("C-DAC");
}
else if(n--)
{
printf("ACTS");
}
}
它的输出是ACTS。
IF 条件下发生了什么?
if (n++)
它检查是否n
不等于零,然后递增n
else if (n--)
它检查是否n
不等于零,然后递减n
您的第一个if
语句不正确(因为n
为零),然后n
递增,并else if
检查语句(n
此时等于 1),if (1)
为真并被printf("ACTS")
调用
n++
和都是后递增/递减n--
操作。
这意味着变量的值首先用于当前表达式中的评估,然后才更改,(即,随后递增/递减)。
0
在布尔表达式中表示 FALSE。由于n
is initial 0
,您的第一个测试if
失败并且该else
子句被评估。
由于在第一个测试中,此时n
已成为,因此这导致该测试变为真,并且1
n++
printf("ACTS");
被执行。
if(0++) ==> if(0) else if(1--) ==> else if(1)
所以打印ACTS
int n=0;
if(n++)
含义:检查然后加 1。
int n=0;
if(++n)
含义:加1,然后检查。
一个 int 总是给出真值,除非它为零。后增量运算符 ,在检查后i++
递增i
变量。如果您使用了预增量运算符 ,++i
则增量将在检查之前进行。
在检查您的IF
部分时,n的值为“ 0 ”。由于i++
, ' n ' 增加1。所以,现在n的值为1。因此,在输入ELSE
部分时,由于n的值为1,它执行ELSE
部分。你得到了ELSE
零件的输出。
它首先检查条件,然后n != 0
它会增加 n 的值
++
and--
运算符不仅修改值,它们还有返回值。行为因位置而异:++var
增加并返回增加的值,而var++
增加但返回旧值。
因为 i 为 0。++i
会在评估前递增,在评估i++
后递增
编译器以从左到右的方式读取命令。意味着首先它检查条件是否为真或假
if (n)
然后递增/递减
n = n +/- 1