我正在研究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 中,它說:
if 陳述句中宣告的變數的范圍從它的宣告點擴展到條件控制的陳述句的末尾。
這就是我所做的,我宣告并初始化了變數a,但是當我嘗試將它與 進行比較時x,編譯器給出了uninitialized local variable a used錯誤。為什么,有什么問題?
我可以
int a = 4;
if (a != x)
// ...
但如果可能的話,我想在一行中完成。
uj5u.com熱心網友回復:
在if條件內的運算式中
int a = 4 && a != x
編譯器實際看到的是
int a = (4 && a != x)
在a初始化之前顯然使用了 的值(這是錯誤所說的),而不是代碼的意圖。
從 C 17 開始,你可以使用 if-with-initializer 語法來達到你想要的效果
if (int a = 4; a != x)
// ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/325816.html
下一篇:輸出==>elifmid_number<query:TypeError:'list'和'int'的實體之間不支持'<'
