上QQ阅读APP看书,第一时间看更新
4.3 新手疑难问题解答
问题1:i++与++i,或者i--与--i是一样的吗?
解答:从作用上看,i++与++i都相当于i=i+1,i--与--i都相当于i=i-1。但它们之间有不同之处,以i++和++i为例,i++是先使用i的值,再执行i=i+1,而++i是先执行i=i+1后,再使用i的值。例如,若i初值为1,则:
j=i++;/*执行后j的值为1,i的值为2,因为先执行j=i,将i的初值1赋给j,此时j=1,然后再执行i=i+1=2;*/
j=++i;/*执行后j的值为2,i的值为2,因为先执行i=i+1=2,将i的值2赋给j,此时j=2;*/
问题2:在使用算术运算符中的除法运算符时,为什么99/5值为19,而不是19.8?
解答:对于“/”运算符,C语言中的规定如下:
(1)当它的两个运算分量均为整数时,计算结果也必须为整数,也就是说运算结果只保留除法运算后的商(舍去小数部分),所以99/5结果为19,舍去小数部分。
(2)如果两个运算分量中有一个数是浮点型,则结果也应该为浮点型数据。例如:99.0/5的结果为19.8。
(3)如果两个运算分量有一个为负值,其结果随不同的机器系统而不同,但多数机器采用“向零取整”的原则。例如-7/4的结果为-1;7/-4的结果为1。