黑马程序员技术交流社区
标题:
整理笔记,C语言基本运算里的一个问题
[打印本页]
作者:
Tuberose
时间:
2015-5-18 09:44
标题:
整理笔记,C语言基本运算里的一个问题
差不多就是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
整理有些蒙圈了
作者:
王二小。
时间:
2015-5-18 09:59
(b++-10) b++在参于运算的时候,先参与运算,后自++,你再去试试++b,我肯定是11的
作者:
Tuberose
时间:
2015-5-18 10:16
++b肯定是11。主要是b++这里我蒙圈了。我知道它赋值是为10。可是在参与运算时还是10而不是11,有点儿乱!这样后面的c值是0而不是1
作者:
unnamed
时间:
2015-5-18 10:35
不难理解吧
(b++-10)等价于((b++)-10),即先取b的值运算再自增,记住就行了
作者:
Tuberose
时间:
2015-5-18 10:55
嗯嗯!我现在也想明白了,开始就是转不出来!
作者:
Tuberose
时间:
2015-5-18 10:56
b++这种情况不管在哪里,先赋原来的值运算,然后再进行自增1就对了。
作者:
wodeheimalife
时间:
2015-5-18 11:17
自增自减就是这样,慢慢想想就明白了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2