[英]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.