2016-08-13 109 views
0

我最近在漫畫中找到了這個代碼,我不明白。有人可以向我解釋這個嗎?爲什麼變量應該改變它的值有什麼原因?OOP靜態變量更改值

static bool isCrazyMurderingRobot = false; 

void interact_with_humans(void) { 
    if (isCrazyMurderingRobot = true) 
     kill(humans); 
    else 
     be_nice_to(humans) 
} 

這裏是漫畫:http://oppressive-silence.com/comics/oh-no-the-robots

+1

簡單的說,你可以在一些語言的條件下進行賦值。看到這個問題的例子是這樣的:http://stackoverflow.com/a/18450261/2127492 – jrbeverly

回答

2

的原因可能是,在許多編程語言, 檢查平等使用==,同時採用一個=標誌將值賦給變量完成)。

因此,代碼

if (isCrazyMurderingRobot = true) 

將會分配true給變量和第一條件總是滿足(作爲分配的結果將是真實的)。

正確的路線是:

// use '==' here instead of '=' to check if variable is set 
// using a single '=' would assign the value instead 
if (isCrazyMurderingRobot == true) 

欲瞭解更多詳情,請查看這些描述(它們是C#語言,但運營商的行爲像Java等其他語言的相似......)

assignment (=)運營商。
equality (==)運營商。