小编Ant*_*act的帖子

将 long 值分配给 ll 向量的索引有什么问题?INT 向量中溢出<long long>

为什么在以下代码中将 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 变量的表达式来做到这一点?

c++ vector vscode-debugger

1
推荐指数
1
解决办法
74
查看次数

标签 统计

c++ ×1

vector ×1

vscode-debugger ×1