我有下面的代碼,我不明白表達式a = b!= c的含義是什麼?
shiftLeft = local.tasks.first != NULL;
if(!shiftLeft)
local.tasks.last = NULL;
我的意思是shiftLeft變量(即布爾值)應該是最後的評估,因此首先評估local.tasks.first!= NULL ,但那是什麼?
我有下面的代碼,我不明白表達式a = b!= c的含義是什麼?
shiftLeft = local.tasks.first != NULL;
if(!shiftLeft)
local.tasks.last = NULL;
我的意思是shiftLeft變量(即布爾值)應該是最後的評估,因此首先評估local.tasks.first!= NULL ,但那是什麼?
這將返回true或false值(取決於事實,如果local.task.first
是NULL
值或不)。
如果local.task.first
是NULL
一個shiftLeft
變量將得到false
值,
如果local.task.first
不是NULL
值shiftLeft
變量將得到true
值。
什麼是重要的,我們不知道shiftLeft
的類型,如果它是一個布爾變量,它將被「填充」true
或false
值。如果它是其他類型的變量(例如一個整數),它將被填充爲0,對於false
和有一些不同於0的真實(但我們無法確定究竟是什麼)。
是布爾值,我在第一篇文章中說過。 – user1797147
但我不明白的是這種三元形式的簡短形式,如shitLeft = local.tasks.first!= NULL? 0:1; – user1797147
@ user1797147,將表達式看作是'a =(b!= c);',它在概念上與'y = x + z'沒有區別。三元運算符'?'沒有涉及,但你通常是正確的;它在邏輯上等同於'a = b!= c? 1:0「,依此類推。 – ray
b!= c部分返回布爾型響應(true或false)。然後將結果分配給a。
在你的例子中,如果local.tasks.first不爲null,那麼shitLeft(sic)爲true。否則它是錯誤的。
謝謝,感謝。 – user1797147
這裏!=
表達首先計算因爲!=
具有比=
更高的優先級,因此它首先用NULL
比較,然後分配到shitLeft
。
如果shitLeft
爲真,那麼if
條件false
,否則if
條件true
。
'='是賦值運算符。這幾乎是你應該先了解C的第一件事。另外,我認爲你在一個變量中忘記了一個'f',除非你正在做一個非常粗糙的遊戲。 – Cubic
'!='運算符結果有'int'類型,可能是'0'或'1',所以'shiftleft'變成'0'或'1'。 – Sergio
@ M.SChaudhari不,這個問題與這個問題完全沒有關係。 – Cubic