gpt4 book ai didi

c++ - 扫描以空格分隔的数字

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:43:13 25 4
gpt4 key购买 nike

我知道用空格分隔的数字的数量。以下代码在 Windows 中有效,但在 Linux 中无效。

#include <iostream>
#include <vector>
#include <string>
using namespace std;

int main(int argc, char *argv[])
{
ios_base::sync_with_stdio(0);
unsigned long k,p,q, all;


cin >> k >> p >> q;
vector<long> klo(k);
all = 0;
for(unsigned long i = 0;i<k;i++){
scanf("%d", &klo[i]);
all += klo[i];
}
}

正如我所说,在 Windows 下完美运行,但 Linux 会为其分配一些随机值:-1220155675-1220155675-12201556750

怎么了?

最佳答案

也许不同平台的字位大小不同,你的 vector 中有 long 类型,而你只读取 int 类型,这不能重写 long 变量的整个大小,你会获取一个半字节未初始化的 long 变量。

尝试改变:

scanf("%d", &klo[i]);

进入:

scanf("%ld", &klo[i]);

ld 表示长十进制类型。

关于c++ - 扫描以空格分隔的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19742694/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com