我有以下代码:
int x = arr[arr.size() -1] - arr[0];
int n = arr.size();
int dx = x/n;
int dy = (arr[arr.size() -1] - arr[0])/arr.size();
std::cout << dx << " " << dy << std::endl;
当我的
arr = [15, 13, 12]
时,我得到了dx = -1
,但是dy = 1431655764
(arr is vector<int>
)为什么
dx
和dy
不同?谢谢! 最佳答案
对于dy
,请注意 std::vector::size
的返回类型是std::vector::size_type
,这是一个无符号整数类型。然后,(arr[arr.size() -1] - arr[0])/arr.size()
的结果也未签名。结果是overflowed,然后分配给dy
类型的int
。
对于dx
,首先将arr.size()
分配给n
(类型为int
),然后将其计算为x/n
,其结果也是int
。然后将结果分配给dx
,一切都很好。