2014-12-30 4 views
-6

У меня этот код меня беспокоит какое-то время. Выражение в строке 7 беспокоит меня. Дает ли он 0 или -1. Если ее 0, то ответ 2 еще ответ 4.Пожалуйста, скажите мне ответ на этот код?

/* Как найти значение с в строке 7 выражение */

#include<stdio.h> 

int main() 
    { 
    int a,b,c=1; 
    a=b=c;       // a,b,c have equal value 
    c=b+=a=-c;      // what will be the output of this expression? 
    c=-c; 
    c=(++c)*2;      
    printf(“%d”,c); 
    return 0; 
    } 
+2

'здесь компилятор дает ошибку' и' ..... тогда ответ 2 else answer is 4'. как? –

+2

Прекратите писать непонятный код. Просто делайте одно за раз, и вы не ошибетесь –

+2

Также, если вы продолжаете писать больше кода, как это, у вас не будет друзей. – Maroun

ответ

2

В C предварительно прирост (уменьшение) и пост- Операторы increment (decment) требуют выражения L-значения в качестве операнда. Предоставление значения R или константы, вызванной константой, приводит к ошибке компиляции.

Значение lvalue - это значение, которое может быть присвоено.

+0

, но c является значением lvalue и его значением в коде –

+0

' c' является значением lvalue, выраженным в пределах braces '++ (- c)' ie '-c' is not - он вычисляет некоторое постоянное значение. – Sadique

+0

Так как я могу написать это, чтобы избежать ошибки lvalue –

2

/* какова величина с */

Это легко ответить: Ваш вопрос не имеет никакого смысла.

Поскольку ваш код не будет компилироваться, c не будет иметь «значение».

+0

Да, я знаю, что он дал ошибку. Вот почему я хочу знать две вещи из этого: 1. why lvalue error 2. вывод c в строке 7 (c = b + = a = -c;) –

+1

Итак, ваш вопрос должен быть: почему он не может скомпилировать ? И нет: какова ценность c? –

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