鱼C论坛

 找回密码
 立即注册
查看: 1389|回复: 8

[已解决]C语言P16拾遗问题

[复制链接]
发表于 2020-8-13 19:01:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
i++和++i 什么区别听懂还有大佬讲解下吗
最佳答案
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 . . .

图片1.png

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 . . .

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-13 19:44:21 | 显示全部楼层
这是特殊运算符。当要用它的任何东西里面出现了,则,若++--在前,则先自增自减1再把增减后的值给那些东西用。
若++--在后,则先把本身的值给那些东西用,然后它本身再自增自减1。
如,i=5。printf("%d",i++)
打印的是5,先把i给printf传过去,此时是5,然后再自增1,即i的值是6。但printf打印的是传过去的值,即5
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

自增自减是什么意思
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-13 20:16:55 | 显示全部楼层
qq2078255969 发表于 2020-8-13 19:48
自增自减是什么意思

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

i = i +1;
i = i - 1;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-14 09:41:09 | 显示全部楼层
你可以这么记忆
x=i++ x=i 然后i再自加
x=++i i先自加 然后x等于自加之后的结果
也就是说i在前面的时候 就是取i的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-14 09:59:10 | 显示全部楼层
qq2078255969 发表于 2020-8-13 19:48
自增自减是什么意思

未知数自己增加和减少
比如,值为2的未知数,自增1就是+1,就成了3;自增2,就是加2,就成了4。
自减是同样的道理
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-26 01:49:22 | 显示全部楼层
我来学习学习,顺便帮你顶上去,让更多的人看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-12 23:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表