为什么在以下代码中将 long 值分配给“out[0]”时会出现 INT 溢出错误?我已经声明为向量了。
vector<long long> foo(int m, int n) {
vector<long long> out(5);
// why is there an overflow of int ??
out[0] = (m-1)*(n-1);
cout << out[0] << endl;
out[0] = (long long) (m-1)*(n-1);
cout << out[0] << endl;
..
..
return out;
}
Run Code Online (Sandbox Code Playgroud)
我还发现对 RHS 进行类型转换是有效的。但我不确定这是否是分配“long long”值的预期方法。
COUT:
-615099295
3679868001
For values: m=40000 and n=92000
Run Code Online (Sandbox Code Playgroud)
请帮助我理解为什么我无法正常为索引赋值,以及正确的方法是什么。(我知道这可能是一个新手问题,但我找不到太多相关信息。)
我需要使用代码中的映射为该输出向量分配值,但我发现它返回了垃圾,只有在花费了大量时间进行调试之后,我才发现初始分配本身存在问题。
在查看与 SO 相关的问题后,我发现LL需要在数字后提及,但是如何使用 int 变量的表达式来做到这一点?