今天看文档时,有个简单的函数结果引起了我的思考,因为这个解释实在想不明白,然后上机验证,
结果如文档所说,这才想通了这个优先级的问题,然后想起自己之前做题时出现的这种错误,现在全解
释通了.....
题目很简单:
int a,b;
a=10;
b=10*a++;
然后输出a,b的值
以前的思路很简单,10*10+1,b结果为101,这个就不做评价了
后来学到了++的优先级比*要高,b=10*(a++),所以b=110,但上机的结果是100
在仔细读i++与++i的定义才发现问题:
++作为单目运算符,只与变量结合,所以自己之前10*10+1的想法从源头就是错的,++只会与a结合,
i++:这种表示(i++)作为一个整体运算,但是先运算i,然后才i+1
++i:这个(++i)作为一个整体,先+1,然后再使用这个整体
所以,10*a++其实是10*(a++),因为++的优先级比*高,然后就是10与一个整体相乘,而这个整体是先
使用再+1,所以b=100,a=11;
下面再出个题目,
int a,b,c;
a=10;
b=a++;
c=10*a++;
这个输出的a,b,c结果又是多少呢?
a=12
b=10
c=110