++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;
}

posted @ 2023-07-04 00:58  fhzy  阅读(90)  评论(0)    收藏  举报