這個問題在這里已經有了答案: 宣告為條件 - 添加括號會導致錯誤 2 個答案 放置額外的圓括號 - 代碼無法編譯 1 個答案 13 小時前關閉。
#include <iostream>
char f()
{
return 0;
}
int main()
{
// Compiles
if (char a = f())
std::cout << a;
// Does not compile (causes a compilation error)
// if ((char a = f()))
// std::cout << a;
return 0;
}
可以在陳述句中宣告一個區域變數并為其賦值,if如下所示:
if (char a = f())
但是,添加一對額外的括號,導致if ((char a = f())),會導致以下編譯錯誤:
錯誤:“char”之前的預期主運算式
這是為什么?兩者有什么區別?為什么額外的一對括號不僅僅被認為是多余的?
uj5u.com熱心網友回復:
簡而言之,C 語法允許陳述句中的條件是運算式或宣告。if
因此,char a = f()是一個宣告(名為 的變數a)。
But(char a = f())不是宣告(也不是可轉換為 的運算式bool)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/495529.html
上一篇:c 如何在執行緒終止后洗掉執行緒
下一篇:在物件使用之前呼叫成員函式
