可能重复:
后增量和前增量概念?
在这种情况下,我无法理解“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。由于nis initial 0,您的第一个测试if失败并且该else子句被评估。
由于在第一个测试中,此时n已成为,因此这导致该测试变为真,并且1n++
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