Olek1
@Olek1

При x = x + 1 чему будет равно х?

Не программист, но ктото давно мне говорил что при x = x + 1 будет x равняться "2"
Только что проверил на Си компиляторе не получилось
Может это не во всех языках так?))

#include <stdio.h>

int main(void) {
int x;
x = x + 1;
printf("%d", x);
return 0;
}


Результат почемуто: 1!

UPD: на каком языке может получиться 2?
  • Вопрос задан
  • 1708 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
А чему было равно х до этого выражения?
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
при x = x + 1 будет x равняться "2"

x = x + 1 -- это не уравнение. Это запись следующей команды: "прибавить к текущему значению переменной x единицу и поместить результат в переменную x". Соответственно результат будет зависеть от значения переменной x перед этой командой.

если я объявляю переменную через int x; и потом ничего в неё не кладу, то там хранится ноль на Си?

Если вы определяете переменную как int x; вне всех функций, то в С и С++ там изначально хранится 0. Если вы делаете то же самое внутри функции, то начальное значение не определено. Технически там будет либо мусор находящийся в стеке или в регистре процессора ассоциированном с данной переменной, либо какое-нибудь отладочное значение записанное туда компилятором специально для отлова обращений к неинициализированным переменным.
Ответ написан
Комментировать
@potan
Функциональный программист
Зависит от многого.
В Haskell, например, этот код, если из контекста будет ясно, что x целочисленный тип, этот код вызовет прерывание программы с ошибкой зацикливания. Но если создать свой тип, реализующий арифметику Пеано, то x станет зацикленной структурой, типа бесконечного списка.
В императивных языках значение x будет зависеть от предидущего значения.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы