C+++里小问题

来源:百度知道 编辑:UC知道 时间:2024/05/26 18:46:02
写出下面表达式运算后a的值,设原来a=12.
a/=a+a 为什么答案是0.
a/=12+12 a=12/24=1/2?
a已定义为整型

因为 /= 优先级低于+。因此先算加,最后a/= a+a可以演化成:
a = 12/(12+12);

因为C++里边整数的计算不是四舍五入,也不会自动提升成为浮点数,因此会被截断,本来结果是0.5直接去掉小数部分。成为了0.
下面的道理一样。

a=12/24=1/2?
这个应该是不对的,因为12/24不能作为左值。

/ 如果两个数都是 整数的话 编译器自动判断是整除
也就是只取整数部分 不取余数

a/=a+a;
等价于
a=a/(a+a);
a=12/24;商0余数舍弃 所以是 0;

告诉你了 如果是被除数和除数都为整型的话 编译器是自动判定整除运算的

你如果不想,那么就把其中一个换成 double 或者float都行 ,或者直接加个12.0 就不是整除了 就是0.5

整型除法 直接舍去小数部分