2017-02-17 9 views
-2

Почему я получаю error: lvalue required as left operand of assignmentПочему я получаю lvalue в качестве левого операнда задания?

Здесь есть 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

try 'i> 10? (B = 15) :(d = 1);' – BLUEPIXY

+0

@BLUEPIXY Я не ищу решение, я ищу причину "Почему это не poinitng в '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: t имеет '(i> 10? b) = 15' - тернарный оператор'? : '. IOW, левая часть 'b = 15' даже не является выражением. – MSalters