之间有什么区别
int n,s;
cin>>n;
s=n*1/10;
cout<<s;
和
int n,s;
cin>>n;
s=n*10/100;
cout<<s;
以及100/1000和1000/10000以及......
当我输入n的大数字(例如1000000000)时,它有不同的输出。
我得到了答案!!
问题是由于评估顺序和整数
溢出答案 0 :(得分:0)
如果您有一个大数字并乘以10,则该数字可能会溢出。这意味着您尝试存储的数字太大,无法容纳为该数字分配的内存。有符号整数溢出的确切结果称为“未定义行为”,这意味着由编译器决定如何处理此问题。
当你除以100时,你所划分的数字现在不同于你预期的数字 - 从而给你错误的结果。
这可能只是调试版本的问题;因为编译器可能会将* 10/100替换为/ 10作为优化的一部分,它将为发布版本做。
然后,将总是定义乘以1然后除以10的另一项,因为乘法将使数字保持不变。