2015-02-17 2 views
-3

Я просто написал код сПочему ++ = 5 является ошибкой?

#include <stdio.h> 

int main() 
{ 
    int a=0; 
    option1: a++=5; 
    option2: ++a=5; 
    printf("%d\n",a); 

    return 0; 
} 

но он не компилируется с ошибкой

lvalue required as left operand of assignment 

почему его ошибка? спасибо!

+1

'option1: a ++ = 5;' не является кодом C. – Vagish

+0

Я знаю - но почему? –

+5

@ Vagish На самом деле это так. Назовите лейблы! – HolyBlackCat

ответ

5

Потому что, как говорит ваш компилятор, a++ не является lvalue, это rvalue. Дополнительную информацию о lvalue и rvaluehere.

-1

в ++ = 5 так же, как (с ++) = 5

А (A ++) будет оценивать 1, и вы не можете сделать 1 = 5

+1

'a' сам оценивает 0. По-прежнему' a = 5; 'действителен, хотя« вы не можете делать »' 0 = 5; '. –

0

Это не действительный синтаксис.

a++; //it will give 1. so after that you are assinging 

Так что, как

1=5; 

Это даст вам сообщение об ошибке. См этот link.

4

A переменная - это имя , связанное с хранением. Когда вы определяете переменную, вы связываете символ с зарезервированным хранилищем. В программе вы можете использовать имя переменной в разных местах. В арифметическом выражении, например a+1, a относится к значению , сохраненному в памяти, связанной с символом. Когда вы используете его в задании, например a=3, a относится к месту хранения .

Когда символ используется для обозначения значения, это называется быть г-значение (правильное значение, значение в правой части присваивания), когда символ используется для обозначения места, он называется l-value (левое значение, значение слева от задания). В a=b, a - значение l и b - значение r.

Вы можете иметь только l-значения слева от задания, alas a++ - это выражение, которое обозначает значение переменной до приращения, а не местоположение, поэтому вы не можете поместить его слева от назначение.

1

ну а ++ просто ярлык, чтобы написать a = a + 1 не более того. есть разница в ++ и ++ a, но оба в конечном итоге добавляют 1 к начальному значению переменной (здесь эта переменная является a) .a ++ = 5 не является допустимым синтаксисом. пример: предположим, что у нас есть начальное значение a = 3, теперь, если вы пишете ++ == 5 (примечание ==, которое означает равное в кодировке), это означает 4 == 5, что неверно. , но поскольку вы используете «=», ваш код не имеет никакого смысла для компилятора.

Смежные вопросы