鱼C论坛

 找回密码
 立即注册
查看: 986|回复: 2

[已解决]哪位老师对自增,自减有深刻理解,简单易懂教教我

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

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

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

x
简单代码能看懂,稍微复杂点的代码,数就算不好了,还是理解不深刻
最佳答案
2020-8-5 02:58:21
看不懂程序,看后面打印出来的结果吧

  1. #include<stdio.h>

  2. int main()

  3. {
  4.           int j = 3,i = 5;
  5.           printf("j = 3,  i = 5\n");
  6.           printf("\n");
  7.           j = j * (i++);
  8.           printf("j = j * (i++) 运算后的结果是:%d, %d",j,i);
  9.           printf("       // 先运算,再自加");
  10.           printf("\n");

  11.           j = 3,i = 5;
  12.           printf("\n");
  13.           j = j * (i--);
  14.           printf("j = j * (i--) 运算后的结果是:%d, %d",j,i);
  15.           printf("       // 先运算,再自减");
  16.           printf("\n");

  17.           j = 3,i = 5;
  18.           printf("\n");
  19.           j = j * (++i);
  20.           printf("j = j * (++i) 运算后的结果是:%d, %d",j,i);
  21.           printf("       // 先自加,再运算");
  22.           printf("\n");

  23.           j = 3,i = 5;
  24.           printf("\n");
  25.           j = j * (--i);
  26.           printf("j = j * (--i) 运算后的结果是:%d, %d",j,i);
  27.           printf("       // 先自减,再运算");
  28.           printf("\n");

  29.           j = 3,i = 5;
  30.           printf("\n");
  31.           j = j * (+i);
  32.           printf("j = j * (+i)  运算后的结果是:%d, %d",j,i);
  33.           printf("       // 保持符号再运算");
  34.           printf("\n");

  35.           j = 3,i = 5;
  36.           printf("\n");
  37.           j = j * (-i);
  38.           printf("j = j * (-i)  运算后的结果是:%d, %d",j,i);
  39.           printf("      // 改变符号再运算\n");
  40.           printf("\n");

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

  43. }
复制代码


***********************************************************
运算结果:

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-5 02:58:21 | 显示全部楼层    本楼为最佳答案   
看不懂程序,看后面打印出来的结果吧

  1. #include<stdio.h>

  2. int main()

  3. {
  4.           int j = 3,i = 5;
  5.           printf("j = 3,  i = 5\n");
  6.           printf("\n");
  7.           j = j * (i++);
  8.           printf("j = j * (i++) 运算后的结果是:%d, %d",j,i);
  9.           printf("       // 先运算,再自加");
  10.           printf("\n");

  11.           j = 3,i = 5;
  12.           printf("\n");
  13.           j = j * (i--);
  14.           printf("j = j * (i--) 运算后的结果是:%d, %d",j,i);
  15.           printf("       // 先运算,再自减");
  16.           printf("\n");

  17.           j = 3,i = 5;
  18.           printf("\n");
  19.           j = j * (++i);
  20.           printf("j = j * (++i) 运算后的结果是:%d, %d",j,i);
  21.           printf("       // 先自加,再运算");
  22.           printf("\n");

  23.           j = 3,i = 5;
  24.           printf("\n");
  25.           j = j * (--i);
  26.           printf("j = j * (--i) 运算后的结果是:%d, %d",j,i);
  27.           printf("       // 先自减,再运算");
  28.           printf("\n");

  29.           j = 3,i = 5;
  30.           printf("\n");
  31.           j = j * (+i);
  32.           printf("j = j * (+i)  运算后的结果是:%d, %d",j,i);
  33.           printf("       // 保持符号再运算");
  34.           printf("\n");

  35.           j = 3,i = 5;
  36.           printf("\n");
  37.           j = j * (-i);
  38.           printf("j = j * (-i)  运算后的结果是:%d, %d",j,i);
  39.           printf("      // 改变符号再运算\n");
  40.           printf("\n");

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

  43. }
复制代码


***********************************************************
运算结果:

jjjj.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-5 07:36:19 | 显示全部楼层
本帖最后由 baige 于 2020-8-5 07:59 编辑
  1. //后自增和后自减都会创建一个临时变量temp存储自增或自减之前的值
  2. #include <stdio.h>

  3. int main()
  4. {
  5.         int i, j, k;
  6.         i = 1;
  7.         j = 2;
  8.         k = (++i) + (i++) + (--j) + (j--);
  9.         //dev运行换成k = (++i) + (--j) + (j--) + (i++);
  10.         printf("i = %d\nj = %d\nk = %d",i,j,k);  
  11.         return 0;
  12. }
复制代码


第一步:i=i+1=2
             k =  2  + (2++) + (--j) + (j--)
第二步:temp=i=2
             i=i+1=3
             k =  2  + temp  + (--j) + (j--)
第三步:j=j-1=1
             k =    2    +   2   +   1   + (j--)
第四步:temp=j=1
             j=j-1=0
             k =    2    +   2   +   1   + temp
第五步:k =    2    +   2   +   1   +  1
最后输出:
            i = 3
            j = 0
            k = 6
不推荐使用dev运行,用别的编译器
DEV C++作为运行环境,编译器是从左至右扫描表达式的,但是在其他编译器中可能会出现从右至左扫描的情况,那么同一个程序的运行结果就不同了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 14:11

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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