Member 14813743 Ответов: 1

Причина, по которой переменная производительность непредсказуема без начального значения?


I want to know why if we name a variable and name it n and set it to the main function.  Why is the result unpredictable when I call that variable in another block?


Что я уже пробовал:

why once the program gave an error and once with random numbers?

#include<iostream>
using namespace std;
int main()
{
	int n=44;
	{
		int n;
		cout<<"n="<<n;
		}		
return 0;	
}

phil.o

Непонятный. Пожалуйста, используйте зеленый виджет "улучшить вопрос" и покажите соответствующий фрагмент кода.
Вы также можете быть заинтересованы в чтении о переменная область применения[^].

0x01AA

И вы уверены, что определили переменную только один раз? И, может быть, не определил его снова во втором блоке с тем же именем переменной?

Nelek

OP отредактирован, чтобы добавить контент. Пожалуйста, проверьте

Nelek

ОП отредактированы, чтобы добавить содержание, пожалуйста, проверьте

Member 14813743

Я хочу знать, почему результат непредсказуем.

phil.o

Спасибо за обновление :)

Member 14813743

Вы абсолютно правы, но почему вы иногда ошибаетесь с другими компьютерами?

0x01AA

Спасибо за подсказку (после всех наших споров:(). У вас есть идея, почему я не получаю информацию о вашем комментарии с этим "красным флагом"? Я несколько раз публиковал этот " баг " в B&S, но для меня он все еще не работает, значит, я обычно не получаю информации о комментариях к моим комментариям.

Nelek

Я получаю красные флаги с задержкой, но все же получаю их.

0x01AA

Не здесь из вашего комментария здесь. Но я получил один для Вашего сообщения в B&S. Не такая уж большая проблема, но было бы неплохо, если бы я получал уведомления и здесь, в Q/A :)

1 Ответов

Рейтинг:
7

phil.o

Вы определили n переменная дважды. Первое заявление заменяется вторым. Итак, когда вы пытаетесь напечатать его значение, это второе объявление, которое принимается во внимание. На этом этапе она была объявлена, но остается неинициализированной; таким образом, ее значение непредсказуемо и может быть любым, что находится по адресу, по которому хранится переменная.

Вы все еще можете обратиться к ссылке, которую я предоставил в своем комментарии:
Область действия переменной C++ [^]

И, как правило, это ужасная идея-давать одно и то же имя нескольким переменным в разных областях.