С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

23.08.2012, 20:21. Просмотров 1054. Ответов 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
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2012, 20:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос почему компилятор не ругается? (C++):

Почему ругается компилятор - C++
#include &lt;iostream&gt; using namespace std; int main() { int a; cin.get(a); system(&quot;pause&quot;); }

Почему компилятор ругается? - C++
#include&lt;iostream&gt; #include&lt;stdio.h&gt; #include&lt;conio.h&gt; using namespace std; FILE*fp; struct Computer { char...

Почему компилятор ругается на математическую функцию? - 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...

Не понимаю почему ругается компилятор (давно не писала на С++) - C++
FileSorter.h: #pragma once #include &lt;iostream&gt; #include &lt;fstream&gt; #include &lt;string&gt; using namespace std; class FileSorter...

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

20
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 249
23.08.2012, 20:30 #2
Ну если это был бы указатель, то он бы руганулся, а так это переменная - под нее память уже выделена, а что там лежит - это твое дело=)
0
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;
}
Почему комп.вы этом случае тогда ругается???
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2012, 20:36 #4
какими словами точно ругается, сообщи.
0
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 20:40  [ТС] #5
Вот фото.
0
Миниатюры
почему компилятор не ругается?  
Evg
Эксперт CАвтор FAQ
18381 / 6429 / 441
Регистрация: 30.03.2009
Сообщений: 17,847
Записей в блоге: 28
23.08.2012, 20:46 #6
Цитата Сообщение от bgm313 Посмотреть сообщение
Почему компилятор не ругается
Потому что стандартом сие НЕ запрещено. Любые адекватные компиляторы в таком случае выдают предупреждения, которые новички, как правило, нифига не читают
0
StasGamilton
Эксперт по пяченькам
67 / 67 / 1
Регистрация: 16.08.2011
Сообщений: 249
23.08.2012, 20:46 #7
Ну не знаю как в визуал студио, но у меня норм скомпилировался пример с выводом а, плюс еще и отработал (показав мусор)
0
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
23.08.2012, 20:47 #8
bgm313, Это вопрос к разработчикам VS. Вообще по сути использование не инициализированной переменной абсолютно корректно (кроме указателей, ссылок), другое дело, что результат такого использования не определен, собственно включив релиз версию проекта - увидите, что никаких ошибок нет.
0
zss
Модератор
Эксперт С++
6580 / 6142 / 2024
Регистрация: 18.12.2011
Сообщений: 16,017
Завершенные тесты: 1
23.08.2012, 20:54 #9
Интересно, что если написать так
C++
1
ck2=ck^(i%2?argv[3][i]:(argv[3][i]+i*5)%255);
то сообщение о неинициализированной переменной ck выдается.
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
23.08.2012, 21:00 #10
+
Цитата Сообщение от bgm313 Посмотреть сообщение
Вот фото.
и причем здесь компилятор? и что это за проект такой? небось снова этот инвалид манагед с--?
0
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 21:33  [ТС] #11
Цитата Сообщение от novi4ok Посмотреть сообщение
+
и причем здесь компилятор? и что это за проект такой? небось снова этот инвалид манагед с--?
А что такое проект инвалид манагед с--? Расскажите в чём он заключается?
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2012, 21:50 #12
bgm313, на скрине у вас переменная 'a' используется до инициализации. И где она в коде?
0
bgm313
12 / 12 / 2
Регистрация: 27.07.2012
Сообщений: 208
23.08.2012, 21:57  [ТС] #13
Нет инициализации!
0
alsav22
5428 / 4823 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
23.08.2012, 22:25 #14
Цитата Сообщение от bgm313 Посмотреть сообщение
Нет инициализации!
Это к чему?
0
Evg
Эксперт CАвтор FAQ
18381 / 6429 / 441
Регистрация: 30.03.2009
Сообщений: 17,847
Записей в блоге: 28
23.08.2012, 22:50 #15
Цитата Сообщение от zss Посмотреть сообщение
Интересно, что если написать так
C++
1
ck2=ck^(i%2?argv[3][i]:(argv[3][i]+i*5)%255);
то сообщение о неинициализированной переменной ck выдается.
Скорее всего это ошибка (а точнее, недочёт) компилятора. Например, у тебя старый компилятор. Либо это какая-то особенность работы предупреждений в режиме без оптимизаций
0
23.08.2012, 22:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2012, 22:50
Привет! Вот еще темы с ответами:

Компилятор не ругается - C++
Компилятор по разному реагирует на 2 указателя на строки (см.комментарии). В связи с этим появился вопрос - где хранятся аргументы...

Ругается компилятор - C++
Компилирую программу: // Proba2.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &lt;vector&gt;...

Ругается компилятор - C++
Создать класс жидкость, имеющий название (указатель на строку), плотность. Определить конструкторы, деструктор и операторы вывода в поток....

ругается компилятор: - C++
#include &lt;stdio.h&gt; #include &lt;iostream&gt; #include &lt;process.h&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; float a,b; ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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