2016-11-30 4 views
1
#include <stdio.h> 
int main(void) 
{ 
    int i = 365, j = 100, result = i + j; 

    printf("i + j is %i\n", result); 

    int i = 100, j = 1; 
    printf("i + j is %i\n", result); 

    return 0; 
} 

9.c: 10: 10: ошибка: Декларация тени локальной переменной [-Werror, -Wshadow] 9.c: 8: 9: ошибка: переопределение 'я'Как я могу переопределить переменные в C?

+0

Я переформатировал и отметил как C, так как вы используете ''. Сделайте retag, если это C++. – Bathsheba

+0

«переопределение« я ». Ну ... посмотрите на код. Почему вы думаете, что это не работает? – Lundin

ответ

4

Заменить int i = 100 с i = 100.

Вы не можете переопределять переменную в той же области действия на C и C++. Но вы можете установить i на другое значение, что и делает мое изменение.

Наконец, если вы хотите, чтобы конечный результат result быть сумма новых значений i и j, то вам придется пересчитывать. Положите result = i + j; непосредственно перед вызовом printf.

+0

Выход i + j равен 465 i + j is 465 – Yellowfun

+1

Это потому, что вы не повторно оцениваете 'результат' после изменения' i' и 'j'. Я изменил ответ. – Bathsheba

+0

Спасибо, теперь он работает! – Yellowfun