每当我试图分割两个整数时,当整数大于21474836
时我得到了一些奇怪的结果 - 我认为这是一些数据类型限制的情况,但是int
埃格尔显然要大得多:2147483647
。分区返回相反(负数)结果
正如我所说,只有当两个整数大于21474836
时才会发生这种情况。
工作(因为整数比21474836
下):
(11474836 * 100)/11474836 // returns 100
不工作:
(211474836 * 100)/211474836 // returns 0, should 100
(31474830 * 100)/31474837 // returns -99, should 99~
(40000000 * 100)/41474837 // returns -7, should 96~
看到现场演示这里:http://ideone.com/lAeneM
问题是什么?
我看来,像功课的问题... –
我不知道你在想什么做乘法.. 。 –
尝试用'100ULL'代替'100'。 –