因为 /= 优先级低于+。因此先算加,最后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
整型除法 直接舍去小数部分