++i与i++
一、作为单独表达式
首先理解一下什么情况下++i或i++会作为一个单独的表达式,这里很难给出很权威标准的答案,个人理解为++i或i++前后都有一个分号的情况,即:
++i; // 单独的表达式,i 先增加,结果不被使用
i++; // 单独的表达式,i 先使用当前值,然后增加
当++i或i++在单独的表达式中使用的时候,先增加还是后增加对表达式的值没有影响,因为它们的结果不会被用于其他计算。
#include <stdio.h>
int main()
{
int i = 1;
i++;
printf("i_1: \t%d\n", i); // 1 + 1 = 2
++i;
printf("i_1: \t%d\n", i); // 2 + 1 = 3
return 0;
}

for循环也是这种情况:


二、其他情况(夹杂在表达式中)
题目已经把范围说的很清楚了,就是一个if-else的关系,不是++i或i++会作为一个单独的表达式的情况,就是属于本二级标题的范围了。
- 当前置递增运算符 ++i 会先增加变量的值,然后将新的值用于表达式的计算。
- 后置递增运算符 i++ 会先将变量的当前值用于表达式的计算,然后再增加变量的值。
#include <stdio.h>
int main()
{
int a = 1;
int b = ++a;
printf("b: \t%d\n", b);
a = 1;
int c = a++;
printf("c: \t%d\n", c);
return 0;
}


浙公网安备 33010602011771号