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

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

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

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

23.08.2012, 20:21. Просмотров 1026. Ответов 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 ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Герц
524 / 341 / 4
Регистрация: 05.11.2010
Сообщений: 1,077
Записей в блоге: 1
24.08.2012, 00:08 #16
и причем здесь компилятор? и что это за проект такой? небось снова этот инвалид манагед с--?
Там вообще-то черным по-белому написано что это ошибка времени выполнения C++. C++/CLI выводит сообщения в стандартной .Net'овской формочке.

Это run-time ошибка, так что ругается не компилятор, а C RunTime
0
novi4ok
551 / 504 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
24.08.2012, 00:33 #17
Цитата Сообщение от bgm313 Посмотреть сообщение
А что такое проект инвалид манагед с--? Расскажите в чём он заключается?
какой темплейт выбирал при создании проекта?
0
Nikoys
26 / 26 / 6
Регистрация: 29.12.2010
Сообщений: 90
24.08.2012, 13:26 #18
Цитата Сообщение от Evg Посмотреть сообщение
Скорее всего это ошибка (а точнее, недочёт) компилятора. Например, у тебя старый компилятор. Либо это какая-то особенность работы предупреждений в режиме без оптимизаций
Та ну, у человека Вижуалка 2010-го, я не думаю, что это старый компилятор)
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
24.08.2012, 13:56 #19
Цитата Сообщение от Nikoys Посмотреть сообщение
Та ну, у человека Вижуалка 2010-го, я не думаю, что это старый компилятор)
Значит коряво работает система выдачи предупреждений
0
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,370
24.08.2012, 14:32 #20
Да нет, система выдачи предупреждений работает нормально.
Сработала самая обычная Runtime проверка, которую компилятор VC++ автоматически вставил в режиме отладки (Debug) - можно тот же самый код скомпилировать в релизе и убедиться, что никаких ошибок не будет.

Hint: компилятор VC++ еще с незапамятной версии в режиме отладки заполняет все неинициализированные переменные "магическим" значением 0xCC (или 0xCD - сейчас уже точно не помню, а проверять лень) [оно же типа 0xCCCCCCCC для многобайтный значений], а при использовании переменной в дебаге проверяет это значение, и если это значение сохранилось (т.е. переменная не инициализирована) - срабатывает Debug Assertion - Failed. Вот и весь фокус :-)
0
Evg
Эксперт CАвтор FAQ
17810 / 6016 / 388
Регистрация: 30.03.2009
Сообщений: 16,531
Записей в блоге: 26
24.08.2012, 16:23 #21
CheshireCat, я говорю о посте 9
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2012, 16:23
Привет! Вот еще темы с ответами:

Компилятор не ругается - 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; ...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.08.2012, 16:23
Ответ Создать тему
Опции темы

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