我有以下代码:

    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>)

为什么dxdy不同?谢谢!

最佳答案



对于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,一切都很好。

07-28 02:02
查看更多