A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小卒子 中级黑马   /  2016-5-11 16:48  /  1214 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<stdio.h>
main()
{
   int a = 21;
   int b = 10;
   int c;
   c = a++;
   printf("Line 6 - c 的值是 %d\n", c);
   c = a--  ;
   printf("Line 7 - c 的值是 %d\n", c);
}

求解,谢谢,原因也告知一下,谢了!!

6 个回复

倒序浏览
第一个c = 21 第二个c =22
第一个先把a的值赋给c 再自增
第二个先把a自增后的值赋给c 再自减
回复 使用道具 举报
如果还有第三个是不是先把a的值自减后的值赋值给c??
回复 使用道具 举报
栗海云 发表于 2016-5-11 17:21
第一个c = 21 第二个c =22
第一个先把a的值赋给c 再自增
第二个先把a自增后的值赋给c 再自减 ...


如果还有第三个是不是先把a的值自减后的值赋值给c?
回复 使用道具 举报
c=a++ ,其中a++是个表达式,意思是把a的值取出然后赋给a++这个表达式,a++的值就是21  。此时c=21 , 由于a++,是一个自增运算,所以a的值,会变成21+1=22 。所以第一次printf C=21

完了运行到c=a--; 同理 把a的值22 赋值给c ,c=22  第二次printf  C=22;

无论是a++;++a(两个都是自增运算,a的值最终都加了1);还是 a--; --a (都是自减元算,a最终值减1) 这四个运算 ,a的值都会变化

以上是我的理解,不知道有没有错
回复 使用道具 举报
同问
回复 使用道具 举报
小卒子 发表于 2016-5-11 18:20
如果还有第三个是不是先把a的值自减后的值赋值给c?

没错 是这样的
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马