2017-02-17 117 views
-2

爲什麼我收到error: lvalue required as left operand of assignment爲什麼我需要左值作爲賦值的左操作數?

這裏是C代碼:

#include <stdio.h> 

int main(){ 
    int b, i = 10, d; 
    i>10?b=15:d=1; 
    return 0; 
} 

這樣

i>10?b=15:d=1; ^

我使用gcc version 5.4.0 (GCC)

+1

嘗試'I> 10?(B = 15):(D = 1);' – BLUEPIXY

+0

@BLUEPIXY我不尋找解決方案,我正在尋找理由「爲什麼它在'b = 15'「中不是指向?它正在像這樣工作:'i> 10?b = 15:(d = 1);' – user123456987

+2

它被解釋爲'(i> 10?b = 15:d)= 1;' – BLUEPIXY

回答

2

你試圖分配1到(i>10?b=15:d)。這將工作在C + +,但不是在C.

+0

那麼爲什麼它沒有指出'b = 15' – user123456987

+0

@ user123456987:因爲你可以' '(i> 10?b)= 15' - 三元運算符是'? :'。 IOW,「b = 15」的左側甚至不是一個表達式。 – MSalters

相關問題