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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему компилятор не выдаёт варнинг? Нет варнинга на неиниц. переменную 
:(
    Опции темы
ДокторТуамОсес
Дата 18.6.2009, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: -5
Всего: -12



Код

float  DD                        ;
float  WW                        ;
float * float_WW = &WW            ; // Берём адрес WW но при этом WW остаётся не инициализированной
        
cout << " DD == " << DD << endl ; // warning C4700: local variable 'DD' used without having been initialized
cout << " WW == " << WW << endl ; // Нет почему-то варнинга,  что переменная WW юзается без инициализации



Нет почему-то варнинга,  что переменная WW юзается без инициализации
--------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ 
PM MAIL   Вверх
andrew_121
Дата 18.6.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



ДокторТуамОсес, Ну так правильно. Вы переменную не используете, а извлекаете ее адрес. А он на протяжении работы всей программы неизменен!

Добавлено через 5 минут и 25 секунд
Компилятор какой?

Это сообщение отредактировал(а) andrew_121 - 18.6.2009, 15:19


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 18.6.2009, 15:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



ДокторТуамОсес
Переменная могла быть инизиализирована через указатель float_WW, об этом компилятор не знает (теоретически он мог бы знать, но это было бы сложно).
если закомментарить эту строку
Код

float * float_WW = &WW            ; // Берём адрес WW но при этом WW остаётся не инициализированной

варнинг будет выдаваться. 
Посмотрим такой пример
Код

int a;
int& ra = a;
ra = 10;
std::cout << a;

этот код вполне нормальный и выдавать на нем предупреждения компилятор не должен. А поскольку он не знает об инцициализации переменной через ссылку или указатель - то не выдает этого предупреждение в таких случаях.
PM   Вверх
andrew_121
Дата 18.6.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



azesmcar, Странно. Варнингов нигде нет!
Компилировал вот этим:
Код

Using built-in specs.
Target: mingw32
Configured with: ../gcc-4.4.0/configure --prefix=/mingw --build=mingw32 --enable
-languages=c,ada,c++,fortran,objc,obj-c++ --disable-nls --disable-win32-registry
 --disable-werror --enable-threads --disable-symvers --enable-cxx-flags='-fno-fu
nction-sections -fno-data-sections' --enable-fully-dynamic-string --enable-libgo
mp --enable-version-specific-runtime-libs --enable-sjlj-exceptions --with-pkgver
sion='TDM-1 mingw32' --with-bugurl=http://www.tdragon.net/recentgcc/bugs.php
Thread model: win32
gcc version 4.4.0 (TDM-1 mingw32)

Вот код:
Код


#include <iostream>

int main(int argc, const char** argv) {
    float  DD                        ;
    float  WW                        ;
    float * float_WW = &WW            ; // Берём адрес WW но при этом WW остаётся не инициализированной
        
    std::cout << " DD == " << DD << std::endl ; // warning C4700: local variable 'DD' used without having been initialized
    std::cout << " WW == " << WW << std::endl ; // Нет почему-то варнинга,  что переменная WW юзается без инициализации
    /*  */
    return 0;
}




--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 18.6.2009, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(andrew_121 @  18.6.2009,  15:29 Найти цитируемый пост)
azesmcar, Странно. Варнингов нигде нет!

Цитата

gcc -Wall ...

PM   Вверх
andrew_121
Дата 18.6.2009, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



azesmcar, Ах да) Вот:
Код

main.cpp: In function 'int main(int, const char**)':
main.cpp:7: warning: unused variable 'float_WW'
main.cpp:9: warning: 'DD' is used uninitialized in this function


Добавлено через 2 минуты и 13 секунд
И все равно странно...


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 18.6.2009, 15:37 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

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



Цитата(andrew_121 @  18.6.2009,  15:34 Найти цитируемый пост)
И все равно странно... 

что именно?
PM   Вверх
zim22
Дата 18.6.2009, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(ДокторТуамОсес @  18.6.2009,  15:16 Найти цитируемый пост)
Нет почему-то варнинга,  что переменная WW юзается без инициализации

warning есть.
http://codepad.org/rGg8yvyr


--------------------
PM MAIL   Вверх
andrew_121
Дата 18.6.2009, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(azesmcar @  18.6.2009,  15:37 Найти цитируемый пост)
что именно? 

То что компилятор не определяет что переменная не была инициализирована ни по ссылке, ни по указателю на нее.

Добавлено через 6 минут и 44 секунды
zim22, А какой компилятор там используется?


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
ДокторТуамОсес
Дата 19.6.2009, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: -5
Всего: -12



Цитата(andrew_121 @  18.6.2009,  15:17 Найти цитируемый пост)
Компилятор какой?

MS VC++ 6.0


Цитата(andrew_121 @  18.6.2009,  15:17 Найти цитируемый пост)
ДокторТуамОсес, Ну так правильно. Вы переменную не используете, а извлекаете ее адрес. А он на протяжении работы всей программы неизменен!

И? smile  Что из этого следует, что адрес не изменен? smile 


Цитата(azesmcar @  18.6.2009,  15:25 Найти цитируемый пост)
ДокторТуамОсес
Переменная могла быть инизиализирована через указатель float_WW, об этом компилятор не знает

А почему он не знает? Я же нигде указатель не использовал в коде.

А компилятор не ругается, что:

Цитата(andrew_121 @  18.6.2009,  15:42 Найти цитируемый пост)
переменная не была инициализирована ни по ссылке, ни по указателю на нее


--------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ 
PM MAIL   Вверх
zim22
Дата 19.6.2009, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(andrew_121 @  18.6.2009,  15:42 Найти цитируемый пост)
А какой компилятор там используется?

gcc


--------------------
PM MAIL   Вверх
ДокторТуамОсес
Дата 19.6.2009, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: -5
Всего: -12



zim22, 
Классный On-line компилятор Вы показали. Буду им пользоваться в спорных случаях
--------------------
"Извините! А это ничего, что я говорю в тот момент, когда Вы меня перебиваете?"™ 
PM MAIL   Вверх
zim22
Дата 19.6.2009, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


depict1
****


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

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



Цитата(ДокторТуамОсес @  19.6.2009,  12:14 Найти цитируемый пост)
Классный On-line компилятор Вы показали

у меня в подписи ещё и "интеграл" есть smile



--------------------
PM MAIL   Вверх
andrew_121
Дата 19.6.2009, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


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

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



Цитата(zim22 @  19.6.2009,  12:38 Найти цитируемый пост)
 меня в подписи ещё и "интеграл" есть

Ну да...это саммое важное smile 


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

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

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

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

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


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

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


 




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


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

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