![](/img/trans.png)
[英]C++17 if statement with initializer, initializer assign nullptr, how to handle condition?
[英]C++17 if statement with initializer but no condition
在 c++17 中,您可以執行以下操作:
if ( init-statement(optional); condition )
根據https://en.cppreference.com/w/cpp/language/if
但是我的編譯器(vs2019)允許
if ( init-statement )
其中 init 語句也是條件。 我找不到任何地方都有記錄,這真的保證有效嗎?
在C ++中,很多事情可以進入condition
,你會想到被允許存在。 例如, condition
可以是int i = 20
。 int i = 20
解析為一個值,該值可以根據上下文轉換為布爾值並進行測試。
所以並不是你的編譯器允許一個沒有condition
的init-statement
。 正是 C++ 從一開始就允許condition
語法包括聲明變量,而您的代碼只是使用它。
if
語句執行以下操作:
condition
的輸出condition
的返回值為true
(上下文可轉換為 bool) - 它執行{ ... }
condition
的返回值為false
- 它跳過{ ... }
所以在你的情況下, if
只是執行init-statement
,它的返回值不是false
所以它執行你的其余代碼( { ... }
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.