作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个循环遍历一个数组,试图找到哪个索引是一个字符串。它应该解决该值应该是什么。我不明白为什么,但是一旦 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
设置为 0
和 if(0)
与 if(false)
相同。因此,您的程序会转到第一个 else-if,它将 i
设置为 1
并且 if(1)
的计算结果为 true。然后您的代码完成 else if (i = 1) {...}
中的 block ,然后结束。
关于c++ - C++ 中的变量自行更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58253071/
我发现以下帖子非常有帮助: How to pickle yourself? 但是,此解决方案的局限性在于,重新加载类时,它不会以其“运行时”状态返回。即它将重新加载所有变量等以及类在转储时的一般状态.
我是一名优秀的程序员,十分优秀!