簡體   English   中英

不明白“if”條件下發生了什么?

[英]Don't understand what's going on in the “if” condition?

有點奇怪的問題。 但不幸的是。 我無法理解 Unreal C++ 代碼中條件中所寫的邏輯。

我在會員 function 中有條件:

void MoveForward(float amount)
{
  if (amount)
{
 // do that
}
}

條件中的“數量”參數是什么意思? 驗證是為了什么? 如果安裝了 還是會是真的 對不起,這個扭曲的問題,不幸的是,目前這一切都是新的......

如果amount不為零,則將其視為true ,如果amount為零,則將其視為false

引自N3337 6.4 選擇聲明

4 除了 switch 語句之外的語句中作為初始化聲明的條件的值是根據上下文轉換為 bool 的聲明變量的值(第 4 條)。

引自 N3337 4.12 Boolean 轉換

1 算術、無范圍枚舉、指針或指向成員類型的指針的純右值可以轉換為 bool 類型的純右值。 零值,null 指針值,或 null 成員指針值轉換為 false; 任何其他值都將轉換為 true。

在 C 和 C++ 中if測試非零值。 任何非零都被認為是真的。 當談到浮點值時,究竟什么是零是書籍可以並且已經寫過的東西,所以如果你想要可靠的代碼就不要這樣做。 可以安全地假設它測試了amount.= 0.0f

但就編譯器而言,浮點數可以隱式轉換為 integer 並且可以測試非零性。

暫無
暫無

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

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