gpt4 book ai didi

c++ - 为什么存储在数组中的 double 值会消失?

转载 作者:行者123 更新时间:2023-11-28 03:12:52 28 4
gpt4 key购买 nike

我正在尝试编写代码以从 csv 文件中读取值并将它们存储在四个单独的数组中。每行有 4 个值。第一个值将存储在一个数组中,第二个值存储在另一个数组中,第三个值存储在另一个数组中,第四个存储在另一个数组中。这是我到目前为止编写的代码:

while (FBWS.good())
{
getline ( FBWS, infor,',');
istringstream (infor) >> infoc;
FBWSmin[i]=infoc;

cout << FBWSmin[i-1] << " ";
cout << FBWSmin[i] << "\n";

getline ( FBWS, infor,',');
istringstream (infor) >> infoc;
FBWSplus[i]=infoc;

getline ( FBWS, infor,',');
istringstream (infor) >> infoc;
FBWStax[i]=infoc;

getline ( FBWS, infor,',');
istringstream (infor) >> infoc;
FBWSmax[0]=infoc;

i=i++;

}

该值在一个循环后存储在数组中,但在下一个循环运行后,先前存储的值重置为零。我无法确定它的编码语法还是什么。

最佳答案

简而言之,i=i++ 不会更新ii++ 递增该值,并返回之前的值

无论如何,这个版本是未定义的行为,因为您在一个表达式中更新值两次。然而,实际中可能发生的情况是每次都将 i 设置回自身,并在每次迭代时覆盖同一行。然而,未定义的行为意味着任何事情都可能发生!你的整个程序变得荒谬。

只需编写++i; 来增加i

(顺便说一句,其他答案提到了序列点。我没有打扰,因为它们是一个相当技术性的概念,无论如何您在编写代码时通常不应该考虑:只需编写更清晰的版本。此外,它们不会不再存在,新版本的标准谈论“前序”和“后序”。)

关于c++ - 为什么存储在数组中的 double 值会消失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17888401/

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