Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> самоприсваивание значения переменной 
V
    Опции темы
vancha94
Дата 28.6.2011, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2011

Репутация: нет
Всего: нет



Здравствуйте, 
возникла проблема, при написании простейшей программы на С++
иницилизируя три переменных типа double , первая остается пустой, а две вторые заполняются какими-то произвольными числами, 
вопрос: как эти значения там оказались?
скрин: 
user posted image


Код

#include <iostream>;
#include <cmath>;
using namespace std;
int main( )

{
    const double g = 9.8, pi = 3.14;
    double v, t , alpha ;
    cin >> v;
    cin >> t;
    alpha = g * t / 2 / v;
    alpha = asin (alpha);
    alpha = alpha * 180 / pi;
    cout << alpha;
}


помогите пожалуйста
PM MAIL Skype   Вверх
boostcoder
Дата 28.6.2011, 23:37 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



ну так инициализируй нулем. в чем проблема?
PM WWW   Вверх
vancha94
Дата 28.6.2011, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2011

Репутация: нет
Всего: нет



я до этого тоже дошел,  мне не понятно откуда эти значения берутся и с чего?
PM MAIL Skype   Вверх
volatile
Дата 29.6.2011, 01:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 16
Всего: 85



Цитата(vancha94 @  28.6.2011,  23:39 Найти цитируемый пост)
мне не понятно откуда эти значения берутся и с чего? 

vancha94, это стековый мусор. Следы прошлых воплощений.

PM MAIL   Вверх
newbieone
Дата 29.6.2011, 02:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.3.2010

Репутация: 1
Всего: 1



vancha94, а компилятор разве не выдавал warning на этапе компиляции, что-то вроде variable might not have been initialized?
на самом деле, то, что первая переменная получила значение, равное нулю - воля случая. с тем же успехом там могло оказаться что угодно. согласно хорошему тону, т.н. local variables - т.е. те, что не являются членами класса, всегда должны быть инициализированы разработчиком при их определении. ни в C, ни в C++, ни в Java их равенство нулю, если разработчик забыл это сделать, не гарантируется.
Цитата
The value of an uninitialized variable is determined by whatever pattern of zeros and ones was left in its memory location by the last program that used that portion of memory.


Это сообщение отредактировал(а) newbieone - 29.6.2011, 09:01
PM MAIL   Вверх
vancha94
Дата 29.6.2011, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 28.6.2011

Репутация: нет
Всего: нет



Цитата(newbieone @ 29.6.2011,  02:40)
 local variables  всегда должны быть инициализированы разработчиком при их обьявлении. ни в C, ни в C++, ни в Java их равенство нулю, если разработчик забыл это сделать, не гарантируется.
Цитата
The value of an uninitialized variable is determined by whatever pattern of zeros and ones was left in its memory location by the last program that used that portion of memory.

То есть переменные одной программы используют область памяти переменных, использованных в предыдущей программе.
Я правильно понял?

Это сообщение отредактировал(а) vancha94 - 29.6.2011, 08:39
PM MAIL Skype   Вверх
boostcoder
Дата 29.6.2011, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


pattern`щик
****


Профиль
Группа: Завсегдатай
Сообщений: 5458
Регистрация: 1.4.2010

Репутация: 20
Всего: 110



Цитата(vancha94 @  29.6.2011,  08:38 Найти цитируемый пост)
Я правильно понял?

ага. все именно так.
PM WWW   Вверх
newbieone
Дата 29.6.2011, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 14.3.2010

Репутация: 1
Всего: 1



только я немного заврался, 
Цитата
local variables  всегда должны быть инициализированы разработчиком

не при объявлении, а при определении, конечно.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0761 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.