C언어 삼항연산자인데

b = a ? 1 : 2;

a ? b = 1 : b = 2;

왜 위에는 되는데 밑에는 a가 lvalue라며 안되는지가 궁금합니다