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

标签 c++ arrays csv store

我正在尝试编写代码以从 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/

相关文章:

c++ - 使用::访问类函数

arrays - 从数组中的数组中提取值

mysql - Where 条件 Mysql 中的 CSV

c++ - 使用 fscanf() 读取时如何跳过文件中的损坏数据

c++ - 使用内联静态数据成员有什么潜在的缺陷吗?

javascript - 将二维数组传递给 C# 模型

mysql - 将 csv 加载到 mysql 选择列

java - 根据键值对比较两个 TreeMap

c# - C# 和 C/C++ 中二进制到 float 转换的区别

C++ - 最快的检查数组边界