qq2078255969 发表于 2020-8-13 19:01:12

C语言P16拾遗问题

i++和++i 什么区别听懂还有大佬讲解下吗

zltzlt 发表于 2020-8-13 19:02:27

i++ 是先使用 i 再对 i 自增 1,例如:

int i = 5;
printf("%d", i++);

打印的是 5 。

++i 是先对 i 进行自增再使用 i,例如:

int i = 5;
printf("%d", ++i);

打印的是 6 。

风过无痕1989 发表于 2020-8-13 19:24:05

看我这个程序的输出吧:

#include<stdio.h>

int main()

{
      int j = 3,i = 5;
      printf("j = 3,i = 5\n");
          printf("\n");
          j = j * (i++);
          printf("j = j * (i++) 运算后的结果是:%d, %d",j,i);
          printf("       // 先运算,再自加");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
          j = j * (i--);
          printf("j = j * (i--) 运算后的结果是:%d, %d",j,i);
          printf("       // 先运算,再自减");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (++i);
          printf("j = j * (++i) 运算后的结果是:%d, %d",j,i);
          printf("       // 先自加,再运算");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (--i);
          printf("j = j * (--i) 运算后的结果是:%d, %d",j,i);
          printf("       // 先自减,再运算");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (+i);
          printf("j = j * (+i)运算后的结果是:%d, %d",j,i);
      printf("       // 保持符号再运算");
          printf("\n");
          j = 3,i = 5;
      printf("\n");
      j = j * (-i);
          printf("j = j * (-i)运算后的结果是:%d, %d",j,i);
          printf("      // 改变符号再运算\n");
          printf("\n");

          printf("单一的 i+ 或单一的 i-                  // 没有意义,并且系统会报错\n");
          printf("\n");

}




**************************************************************************

j = j * (i++)   运算后的结果是:15,6                //先运算,再自加

j = j * (i- -)    运算后的结果是:15,4                //先运算,再自减

j = j * (++i)   运算后的结果是:18,6                //先自加,再运算

j = j * (- -i)    运算后的结果是:12,4                //先自减,再运算

j = j * (+ i)   运算后的结果是:15,5                //保持符号再运算

j = j * (- i )    运算后的结果是:-15,5               //改变符号再运算

单一的 i + 或单一的 i -                                       //没有意义,并且系统会报错


Press any key to continue . . .

405794672 发表于 2020-8-13 19:44:21

这是特殊运算符。当要用它的任何东西里面出现了,则,若++--在前,则先自增自减1再把增减后的值给那些东西用。
若++--在后,则先把本身的值给那些东西用,然后它本身再自增自减1。
如,i=5。printf("%d",i++)
打印的是5,先把i给printf传过去,此时是5,然后再自增1,即i的值是6。但printf打印的是传过去的值,即5

qq2078255969 发表于 2020-8-13 19:48:56

405794672 发表于 2020-8-13 19:44
这是特殊运算符。当要用它的任何东西里面出现了,则,若++--在前,则先自增自减1再把增减后的值给那些东西 ...

自增自减是什么意思

风过无痕1989 发表于 2020-8-13 20:16:55

qq2078255969 发表于 2020-8-13 19:48
自增自减是什么意思

比如 i ,就它自己,没有其他的元素了,就形成了自加自减:

i = i +1;
i = i - 1;

haoiyang 发表于 2020-8-14 09:41:09

你可以这么记忆
x=i++ x=i 然后i再自加
x=++i i先自加 然后x等于自加之后的结果
也就是说i在前面的时候 就是取i的值

405794672 发表于 2020-8-14 09:59:10

qq2078255969 发表于 2020-8-13 19:48
自增自减是什么意思

未知数自己增加和减少
比如,值为2的未知数,自增1就是+1,就成了3;自增2,就是加2,就成了4。
自减是同样的道理

乐乐学编程 发表于 2020-9-26 01:49:22

我来学习学习,顺便帮你顶上去,让更多的人看到
页: [1]
查看完整版本: C语言P16拾遗问题