Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497

Поведение неопределенной переменной

15.04.2011, 14:37. Показов 1727. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ, поясните пожалуйста любопытную странность. Вот такой вот код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
using namespace std;
class myclass
{ 
public: int i; myclass() {}
};
 
int main()
{ 
myclass c;
cout << "I:" <<  c.i << endl;
}
На моей машине стабильно выдает нули:
$ for ((a=1; a <= 8 ; a++)); do ./out; done;
I:0
I:0
I:0
I:0
I:0
I:0
I:0
I:0
Однако, если убрать << "I: ":
C++
1
cout <<  c.i << endl;
Программа выдает мусор:
$ for ((a=1; a <= 8 ; a++)); do ./out; done;
1581306624
997987408
1782514144
-723769888
669829280
-1128111856
-1799658848
-1780251024
В чем причина того, что в первом случае стабильно получаются нули?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.04.2011, 14:37
Ответы с готовыми решениями:

Компилятор считает функцию неопределенной
Для каждого класса есть свой заголовочный файл. В первом классе находится абстрактный метод. Второй класс, дочерний от первого, реализует...

Массив объектов класса неопределенной длины
Здравствуйте! Помогите пожалуйста. Для определения массива объектов раньше пользовался MyClass * MyObject, а потом уже задавал его...

Определение длины заранее неопределенной строки
Добрый день. Возник вопрос с определением длины строки. Если она заранее определена, то используя функцию strlen() я легко получаю нужное...

5
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
15.04.2011, 15:27
В классе нет конструктора, верней есть его объявление и всёО_о
Ну а об инициализации переменной int i вообще молчу!Ты где её ввыодишь присваиваешь значение???
Понтно что бред программа выдаёт...
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
15.04.2011, 15:41  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Ну а об инициализации переменной int i вообще молчу!Ты где её ввыодишь присваиваешь значение???
Понтно что бред программа выдаёт...
i остается неопределнной, об этом сказано в заголовке треда. Вопрос был про разницу в поведении в двух вариантах кода.
0
101 / 101 / 27
Регистрация: 10.09.2010
Сообщений: 267
15.04.2011, 15:49
а что за компилятор?? у меня выдает мусор и в первом и во втором случаи.
0
 Аватар для SandWraith
189 / 189 / 38
Регистрация: 11.04.2009
Сообщений: 497
15.04.2011, 15:54  [ТС]
Цитата Сообщение от Overmind024 Посмотреть сообщение
а что за компилятор?? у меня выдает мусор и в первом и во втором случаи.
Code
1
2
3
4
5
6
7
8
$  g++ -v                                                                                                
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-unknown-linux-gnu/4.5.2/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: /build/src/gcc-4.5-20110127/configure --prefix=/usr --enable-languages=c,c++,fortran,objc,obj-c++,ada --enable-shared --enable-threads=posix --enable-__cxa_atexit --enable-clocale=gnu --enable-gnu-unique-object --enable-lto --enable-plugin --enable-gold --with-plugin-ld=ld.gold --disable-multilib --disable-libstdcxx-pch --with-system-zlib --with-ppl --with-cloog --with-cloog-include=/usr/include/cloog-ppl --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info
Thread model: posix
gcc version 4.5.2 20110127 (prerelease) (GCC)
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
15.04.2011, 16:40
Цитата Сообщение от SandWraith Посмотреть сообщение
В чем причина того, что в первом случае стабильно получаются нули?
По идее звёзды встали так, что при отсутсвии дополнительного кода (который появляется из-за << "I") эта часть стека в одном стабильно оказывается обнулённой, а во втором случае - нестабильно замусоренной. Переменная "c" лежит в стеке. До функции main работает целая куча других функций на том же самом стеке. С виду каких-то вразумтиельные причины назвать сложно

Добавлено через 1 минуту
У меня, например, при наличии "I:" стабильно выдаёт "I:134514640", а в отсутсвии - стабильно "-1208301348"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.04.2011, 16:40
Помогаю со студенческими работами здесь

a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b
даны произвольные числа a,b и c.Присвоить максимальное из них переменной a,минимальное-переменной c,среднее переменной b.

Присвоить значение наименьшего элемента массива переменной М1, номер строки, где находится этот элемент, - переменной Т, номер столбца - переменной С
Массив С действительных чисел имеет 5 строк и 11 столбцов. Присвоить значение наименьшего элемента массива переменной М1, номер строки, где...

Непонятная ошибка неопределенной переменной
Всем привет ))) Я новичок в PHP и надо написать программу : найти самое длинное слово начинающиеся на &quot;а&quot; и все остальные...

Преобразование списка с неопределенной переменной в терм
всем привет! есть задание &quot;Определите предикат конкрет(Терм) так, чтобы он принимал значение истина, когда в Tepм'e нет ни...

Как присвоить переменной индекс последнего элемента в массиве неопределенной длинны?
Есть массив переменной длинны, и мне нужно присвоить переменной индекс последнего элемента массива. Подскажите пожалуйста как это можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru