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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

差不多就是a++和++a的问题
int a;
int b = 10;
    a = b++;
printf("a=%d,b=%d\n",a,b);
输出结果很明显是:a=10,b=11
但是当
int a = 10;
    b = 10;
int c = (a<5)||(b++ -10);
printf("a=%d,b=%d,c=%d\n",a,b,c);
因为a<5输出为0,所以逻辑或继续看右边。
问题来了,此处为何b++部分的值在这里不是11而是10呢?
他不是一个整体应该自加为11吗?
最后结果是a=10,b=11,c=0
整理有些蒙圈了来自: iPhone客户端

6 个回复

倒序浏览
(b++-10) b++在参于运算的时候,先参与运算,后自++,你再去试试++b,我肯定是11的
回复 使用道具 举报
Tuberose 来自手机 中级黑马 2015-5-18 10:16:25
藤椅
++b肯定是11。主要是b++这里我蒙圈了。我知道它赋值是为10。可是在参与运算时还是10而不是11,有点儿乱!这样后面的c值是0而不是1来自: iPhone客户端
回复 使用道具 举报
不难理解吧
(b++-10)等价于((b++)-10),即先取b的值运算再自增,记住就行了
回复 使用道具 举报
Tuberose 来自手机 中级黑马 2015-5-18 10:55:13
报纸
嗯嗯!我现在也想明白了,开始就是转不出来!来自: iPhone客户端
回复 使用道具 举报
Tuberose 来自手机 中级黑马 2015-5-18 10:56:54
地板
b++这种情况不管在哪里,先赋原来的值运算,然后再进行自增1就对了。来自: iPhone客户端
回复 使用道具 举报
自增自减就是这样,慢慢想想就明白了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马