尽管已初始化变量,编译器仍给出未初始化的局部变量错误
compiler gives uninitialized local variable error despite initialized variable
我正在研究 C++ 中的 条件声明 主题并遇到以下问题。
#include <iostream>
int main() {
int x;
std::cin >> x;
if(int a = 4 && a != x) {
std::cout << "Bug fixed!" << std::endl;
}
}
我声明并初始化了变量a
。在 Bjarne Stroustrup Ed.2011 的 The C++ Programming Language 中说:
The scope of variable declared in if statement extends from its point of declaration to the end of the statement that the condition controls.
这就是我所做的,我声明并初始化了变量 a
,但是当我尝试将它与 x
进行比较时,编译器给出了 uninitialized local variable a used
错误。为什么,有什么问题?
我可以
int a = 4;
if (a != x)
// ...
但如果可能的话,我想在一行中完成。
在 if
条件内的表达式中
int a = 4 && a != x
编译器实际看到的是
int a = (4 && a != x)
其中 a
的值显然在初始化之前被使用(这是错误的意思),而不是代码的意图。
从 C++17 开始,您可以使用 if-with-initializer 语法来实现您想要的效果
if (int a = 4; a != x)
// ...
我正在研究 C++ 中的 条件声明 主题并遇到以下问题。
#include <iostream>
int main() {
int x;
std::cin >> x;
if(int a = 4 && a != x) {
std::cout << "Bug fixed!" << std::endl;
}
}
我声明并初始化了变量a
。在 Bjarne Stroustrup Ed.2011 的 The C++ Programming Language 中说:
The scope of variable declared in if statement extends from its point of declaration to the end of the statement that the condition controls.
这就是我所做的,我声明并初始化了变量 a
,但是当我尝试将它与 x
进行比较时,编译器给出了 uninitialized local variable a used
错误。为什么,有什么问题?
我可以
int a = 4;
if (a != x)
// ...
但如果可能的话,我想在一行中完成。
在 if
条件内的表达式中
int a = 4 && a != x
编译器实际看到的是
int a = (4 && a != x)
其中 a
的值显然在初始化之前被使用(这是错误的意思),而不是代码的意图。
从 C++17 开始,您可以使用 if-with-initializer 语法来实现您想要的效果
if (int a = 4; a != x)
// ...