Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка односвязного списка https://www.cyberforum.ru/cpp-beginners/thread1260148.html
В условии задачи нужно считать из файла неопределенное количество студентов и занести их в односвязный список. Отсортировать по изучаемому языку и вывести на экран. Вроде бы написал, но в сортировке...
C++ Вычислительная ошибка при малом шаге
Всем привет. Только начинаю изучать с++. В общем, нужно написать программу. Вот она: "Вычислить и вывести на экран в виде таблицы значения функции, заданной графически (из лабораторной работы №1,...
Как сделать блок схему? C++
Как сделать блок схему? #include<iostream.h> #include<conio.h> int s=0; void main() { clrscr(); for(int i=1;i<5;i++) { if(i%3==0)
C++ Блок-схема Помогите сделать блок схему по коду #include<iostream> using namespace std; void main() { float z,y,x; system("cls"); cout<<"Enter x="; cin>>x; cout<<"Enter y="; https://www.cyberforum.ru/cpp-beginners/thread1260120.html
C++ Анализатор команд https://www.cyberforum.ru/cpp-beginners/thread1260119.html
помогите написать анализатор команд на с++
Блок-схема по коду программы C++
Нужно сделать блок схему #include<iostream.h> #include<conio.h> #include<math.h> int x,y; void main() { clrscr(); cout<<"Enter x=";
Блок-схема к программе C++
Нужно сделать блок схему к программе #include<iostream.h> #include<conio.h> #include<math.h> float y,x; const float p=3.1415926; void main() { clrscr();
C++ Необходима библиотека для работы с векторными форматами Здравствуйте! По ходу деятельности мне стало необходимо работать с векторными изображениями. К сожалению, поиск дает очень мало результатов. Какие существуют удобные библиотеки для работы (не... https://www.cyberforum.ru/cpp-beginners/thread1260110.html
C++ После выполнения программы, работающей с динамической памятью, вылетает ошибка https://www.cyberforum.ru/cpp-beginners/thread1260095.html
при компиляции вылетает ошибка (не может обратиться к private gолям next, val) err: C2248 если поля поместить в public, то прога компилится, но вылетает сообщение после вывода очереди:...
C++ Указатель на указатели (1.Удалить элемент по ключу из списка, 2.удалить весь список) Вот моя программа и осталось сделать эти две функции и у меня не выходит текст программы: main.cpp #include <QCoreApplication> #include <malloc.h> #include <iostream> #include "type.h"... https://www.cyberforum.ru/cpp-beginners/thread1260091.html
MrGluck
Форумчанин
Эксперт CЭксперт С++
8143 / 4994 / 1436
Регистрация: 29.11.2010
Сообщений: 13,460
22.09.2014, 22:41 0

Распространенные ошибки

22.09.2014, 22:41. Просмотров 108643. Ответов 63
Метки (Все метки)

Ответ

Использование неинициализированной переменной

Пожалуй, одна из самых распространённых ошибок.

Компилятор о такой ошибке может выдать предупреждающее сообщение такого типа
d:\current\cpp\test\test.c(9) : warning C4700: использована неинициализированная локальная переменная "fp"
Однако, этого не произойдет, если предупреждения об ошибках отключены. В Visual Studio эта настройка регулируется командой:
Проект -> Свойства -> Свойства конфигурации -> С/С++ -> Общие -> Уровень предупреждений

Вариаций на эту тему много, приведу пару примеров:
C++
1
2
int x; // предполагалось, например, int x;cin>>x;
std::cout << x; // выведет мусор - значение, которое находилось в переменной x
Чаще всего почему-то встречается вариант с использованием неинициализированного счётчика или переменной для подсчёта суммы, как показано ниже:
C++
1
2
3
4
5
6
7
8
int main()
{
    const int arrSize = 3, arr[arrSize] = { 1, 2, 3 };
    int sum; // ложное предположение, что переменная неявно инициализируется нулём, т.е. надо писать int sum=0;
    for ( int i = 0; i < arrSize; i++ )
        sum += arr[i]; // мы к "мусору" добавляем значение элемента массива
    std::cout << sum; // выведет не то, что вы ожидали
}
Кликните здесь для просмотра всего текста
Да, статические и глобальные переменные таки инициализируются нулём по-умолчанию, но если вы это знаете, то наверняка и с проблемой выше не сталкивались

Также эта проблема кроется в частичной инициализации объектов.
C++
1
2
3
4
5
6
7
8
9
10
11
12
struct A
{
    int x, y, z;
};
 
A a;
a.x = 2;
a.y = 3;
// а здесь мы с помощью Ctrl + C, Ctrl + V породили себе проблему
a.y = 4; // а хотели написать a.z=0;
// некоторые вычисления
std::cout << a.x << " " << a.y << " " << a.z;
Некоторые программисты советуют всегда инициализировать переменные при объявлении какими-нибудь дефолтными значениями. Это особенно важно при использовании указателей, отладка которых занимает много драгоценных часов. Также могу посоветовать объявлять переменные как можно ближе к месту их использования, это поможет отследить проблему.

Вернуться к обсуждению:
Распространенные ошибки
3
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.09.2014, 22:41

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Распространенные ошибки SEO и ASP.NET 2.0
Здравствуйте, существуют несколько СЕО проблем при использовании ASP.NET, ниже я опишу эти...

Самые распространённые фамилии
Здравствуйте! Для реализации автоподстановки фамилии нужно как-то выявить, например, 1 (10, 15,...

Самые распространенные строки
type Mytype = record name:string; surname:string; end; var Students:Mytype; ...

Найти и вывести самые распространенные женские те мужские имена
О каждом студенте факультета доступна следующая информация: фамилия, имя, отчество, пол, возраст,...

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