powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Инициализация глобальной переменной
5 сообщений из 5, страница 1 из 1
Инициализация глобальной переменной
    #39634414
koleso_cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую,
наткнулся на синтетическую задачку по С++.
Что выведет следующий код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
#include <iostream>
using namespace std;

int x = 1;

namespace A {
  int x = 2;
}

int main()
{
  int x = x;
  cout << x;
  return 0;
}



при компиляции получаю ошибку на строке int x = x; в main()
error C4700: uninitialized local variable 'x' used

причем если эту строку закомментировать, и оставить
Код: plaintext
1.
2.
3.
4.
5.
6.
int main()
{
  //int x = x;
  cout << x;
  return 0;
}



то ошибки не будет, в консоль напечатается 1.
Подскажите пожалуйста, в чем причина ошибки C4700 ?
...
Рейтинг: 0 / 0
Инициализация глобальной переменной
    #39634419
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koleso_cpp,

Код: plaintext
1.
int x = x;


Здесь объявляется x и потом инициализируется самим собой (а он неинициализирован еще).
То что существует глобальная переменная с таким именем не важно, т.к. локальные имена имеют приоритет.
...
Рейтинг: 0 / 0
Инициализация глобальной переменной
    #39634435
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
koleso_cpp,

http://eel.is/c draft/basic.scope.pdecl#def:point_of_declaration The point of declaration for a name is immediately after its complete declarator and before its initializer (if any), except as noted below.
[Example:

unsigned char x = 12;
{ unsigned char x = x; }

Here the second x is initialized with its own (indeterminate) value.
— end example ]
...
Рейтинг: 0 / 0
Инициализация глобальной переменной
    #39634437
koleso_cpp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a guest,
Anatoly Moskovsky,
спасибо!
...
Рейтинг: 0 / 0
Инициализация глобальной переменной
    #39635105
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
koleso_cpp,

надо

Код: plaintext
1.
int x =::x;
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Инициализация глобальной переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]