簡體   English   中英

C ++ 17 if 語句帶有初始值設定項但沒有條件

[英]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解析為一個值,該值可以根據上下文轉換為布爾值並進行測試。

所以並不是你的編譯器允許一個沒有conditioninit-statement 正是 C++ 從一開始就允許condition語法包括聲明變量,而您的代碼只是使用它。

if語句執行以下操作:

  • 評估condition的輸出
  • 如果condition的返回值為true (上下文可轉換為 bool) - 它執行{ ... }
  • 如果condition的返回值為false - 它跳過{ ... }

所以在你的情況下, if只是執行init-statement ,它的返回值不是false所以它執行你的其余代碼( { ... } )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM