Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
#1

почему компилятор не ругается? - C++

23.08.2012, 20:21. Просмотров 1013. Ответов 20
Метки нет (Все метки)

Почему компилятор не ругается, когда я исп. неинициализированную переменную и кладёт автоматически туда мусор. (см..коменатрий в коде):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 FILE* fp,*fo;
 unsigned char key[16];    
 unsigned char ck;           
 unsigned char buf[16];
 int i,n;
 
 if(argc!=4)
 {
    return 0;
 }
 
 n = strlen(argv[3]);
 
 
 for(i=0;i<n;i++)
     ck^=i%2?argv[3][i]:(argv[3][i]+i*5)%255; //использование неинициализированной переменной ck
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2012, 20:21     почему компилятор не ругается?
Посмотрите здесь:

Почему компилятор ругается на математическую функцию? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cmath&gt; using namespace std; class X { double *x, *y,...

Почему компилятор ругается на использование шаблона (template)? - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;iomanip&gt; #include &lt;chrono&gt; #include &lt;ctime&gt; #include &lt;thread&gt; #include...

Multiple definition: почему компилятор ругается на единственную функцию, используемую в обоих source-файлах? - C++
Пихаю хедер в 2 сурсца разных классов. Компилятор ругается на единственную функцию, которую я использую в обоих сурсцах. #ifndef LIB ...

Компилятор ругается на USHORT * - C++
USHORT * pInt = new USHORT; Чего это он? 1&gt;d:\проги\указателя\указателя\указателя.cpp(48): error C2065: USHORT: необъявленный...

Ругается компилятор (итераторы) - C++
Мужики в чем дело компилятор ругается C2451 #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;fstream&gt; #include &lt;map&gt; using...

компилятор ругается помогите - C++
Недавно взялся за изучение С++ забил программку а запускаться не хочет #include &lt;iostream&gt; #include &lt;string&gt; struct node { ...

компилятор ругается на структуру - C++
попалась вот такая вот структура для графа, но компилятору она не нравится.... template &lt;class V, class E&gt; struct graph { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
23.08.2012, 20:30     почему компилятор не ругается? #2
Ну если это был бы указатель, то он бы руганулся, а так это переменная - под нее память уже выделена, а что там лежит - это твое дело=)
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 20:34  [ТС]     почему компилятор не ругается? #3
А вы попробуйте вот так:
C++
1
2
3
4
void main(void){
        int a;
    std::cout << a;
}
Почему комп.вы этом случае тогда ругается???
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2012, 20:36     почему компилятор не ругается? #4
какими словами точно ругается, сообщи.
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 20:40  [ТС]     почему компилятор не ругается? #5
Вот фото.
Миниатюры
почему компилятор не ругается?  
Evg
Эксперт CАвтор FAQ
17543 / 5781 / 370
Регистрация: 30.03.2009
Сообщений: 15,921
Записей в блоге: 26
23.08.2012, 20:46     почему компилятор не ругается? #6
Цитата Сообщение от bgm313 Посмотреть сообщение
Почему компилятор не ругается
Потому что стандартом сие НЕ запрещено. Любые адекватные компиляторы в таком случае выдают предупреждения, которые новички, как правило, нифига не читают
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 258
23.08.2012, 20:46     почему компилятор не ругается? #7
Ну не знаю как в визуал студио, но у меня норм скомпилировался пример с выводом а, плюс еще и отработал (показав мусор)
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
23.08.2012, 20:47     почему компилятор не ругается? #8
bgm313, Это вопрос к разработчикам VS. Вообще по сути использование не инициализированной переменной абсолютно корректно (кроме указателей, ссылок), другое дело, что результат такого использования не определен, собственно включив релиз версию проекта - увидите, что никаких ошибок нет.
zss
Модератор
Эксперт С++
6321 / 5905 / 1913
Регистрация: 18.12.2011
Сообщений: 15,186
Завершенные тесты: 1
23.08.2012, 20:54     почему компилятор не ругается? #9
Интересно, что если написать так
C++
1
ck2=ck^(i%2?argv[3][i]:(argv[3][i]+i*5)%255);
то сообщение о неинициализированной переменной ck выдается.
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2012, 21:00     почему компилятор не ругается? #10
+
Цитата Сообщение от bgm313 Посмотреть сообщение
Вот фото.
и причем здесь компилятор? и что это за проект такой? небось снова этот инвалид манагед с--?
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 21:33  [ТС]     почему компилятор не ругается? #11
Цитата Сообщение от novi4ok Посмотреть сообщение
+
и причем здесь компилятор? и что это за проект такой? небось снова этот инвалид манагед с--?
А что такое проект инвалид манагед с--? Расскажите в чём он заключается?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2012, 21:50     почему компилятор не ругается? #12
bgm313, на скрине у вас переменная 'a' используется до инициализации. И где она в коде?
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 21:57  [ТС]     почему компилятор не ругается? #13
Нет инициализации!
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2012, 22:25     почему компилятор не ругается? #14
Цитата Сообщение от bgm313 Посмотреть сообщение
Нет инициализации!
Это к чему?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2012, 22:50     почему компилятор не ругается?
Еще ссылки по теме:

Компилятор ругается на fopen - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;stdio.h&gt; using namespace std; int main() { FILE *f =...

Компилятор ругается на strrev - C++
Подключил cstring, все равно онлайн Ideone и Shell не понимают strrev().

компилятор с++ 2012 ругается - C++
Алгоритмы накопления y=x - sqrt(abs(x)); x=(0.98,0.52,0.77,-0.67,-0.14); n=5 #include &quot;stdafx.h&quot; #include...

ошибка компилятор ругается... - C++
LDay::LDay(DayOfWeek today,unsigned short int Lessons,time LessonTime,string s1, string s2=&quot;TEST&quot;,string s3=&quot;&quot;,string s4=&quot;&quot;,string...

Компилятор ругается на fopen - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include &lt;string.h&gt; #define MAX 50 using namespace std; // Приоритет операций int...


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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
17543 / 5781 / 370
Регистрация: 30.03.2009
Сообщений: 15,921
Записей в блоге: 26
23.08.2012, 22:50     почему компилятор не ругается? #15
Цитата Сообщение от zss Посмотреть сообщение
Интересно, что если написать так
C++
1
ck2=ck^(i%2?argv[3][i]:(argv[3][i]+i*5)%255);
то сообщение о неинициализированной переменной ck выдается.
Скорее всего это ошибка (а точнее, недочёт) компилятора. Например, у тебя старый компилятор. Либо это какая-то особенность работы предупреждений в режиме без оптимизаций
Yandex
Объявления
23.08.2012, 22:50     почему компилятор не ругается?
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru