gpt4 book ai didi

c++ - C++ 中的变量自行更改

转载 作者:行者123 更新时间:2023-11-27 22:33:18 25 4
gpt4 key购买 nike

我有一个循环遍历一个数组,试图找到哪个索引是一个字符串。它应该解决该值应该是什么。我不明白为什么,但是一旦 if 语句开始 i 变为 1,这就会给我的代码一个错误。我的 C++ 不是很流利。

for(int i = 0; i < 4; i++) {
if(auto value = std::get_if<std::string>(&varArr[i])) {
solvedIndex = i;

auto value0 = std::get_if<float>(&varArr[0]);
auto value1 = std::get_if<float>(&varArr[1]);
auto value2 = std::get_if<float>(&varArr[2]);
auto value3 = std::get_if<float>(&varArr[3]);

//i changes to 1 when this if starts??
if(i = 0) {
solvedVar = (*value3 / *value1) * *value2;
} else if (i = 1) {
solvedVar = *value3 / (*value0 / *value2);
} else if (i = 2) {
solvedVar = *value0 / (*value3 / *value1);
} else {
solvedVar = *value1 * (*value0 / *value2);
}
break;
}
}

请注意,这些变量已在上面声明。此外,varArr 中填充了以下值:

std::variant<std::string, float> varArr[4];
int solvedIndex;
float solvedVar;

最佳答案

如前所述,在您的 if 语句中,您正在使用赋值运算符 (=),但需要相等比较运算符 (==)。对于您的变量 i,第一个 if 语句将 i 设置为 0if(0)if(false) 相同。因此,您的程序会转到第一个 else-if,它将 i 设置为 1 并且 if(1) 的计算结果为 true。然后您的代码完成 else if (i = 1) {...} 中的 block ,然后结束。

关于c++ - C++ 中的变量自行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58253071/

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