关于++--操作符的隐含问题
时间:05-19 14:09 阅读:898次
*温馨提示:点击图片可以放大观看高清大图
简介:本文主要讲了一下关于++--操作符的隐含问题,下面一起来学习一下:
操作符++使用时可能引起意想不到的问题
如下:
int m_i = 0;
int m_r = 0;
m_r = (m_i++*2)+(m_i++*3);
本意可能是:
m_r1 = m_i*2, m_i++ //0*2 m_i=1
m_r2 = m_i*3, m_i++ //1*3 m_i=2
m_r = m_r1 + m_r2 //m_r=0+3
由于m_r的计算和m_r2的计算优先级相等,
所以编译器可以以任意顺序计算,
因此结果有可能是先计算m_r2=0,再计算m_r1=2。
结果m_r就存在两种可能值2或3.
为避免此类问题发生,++操作符应作为单独一条语句使用
--操作符存在同样的隐蔽性问题。