19.06.2017
Новая задача Найти максимальное отрицательное число.

07.06.2017
Новая статья Язык Бэйсик.

05.06.2017
Новая статья Стандарт С++.

04.06.2017
Добавлен раздел Документация.

31.05.2017
Новые видео и статья Функция High.

Раздел: Ошибки программирования в С++

Автоматическое преобразование типов

Основы C++ Основы C++

C++ - это один из самых популярных языков программирования. Не важно, на каком языке программируете лично вы. Но, если вы хотя бы в общих чертах не знаете С++, то это большой пробел в вашем образовании, который надо восполнить как можно быстрее... Подробнее...

В Паскале при бинарных арифметических операциях результат будет целого типа, если ОБА операнда являются выражениями целого типа. Если хотя бы один из операндов является выражением вещественного типа, то и результат будет иметь вещественный тип.

В С/С++ этих ограничений опять же нет. С одной стороны - это даёт больше свободы программисту. Но увеличение свободы всегда влечёт за собой увеличение ответственности. Это означает, что программист сам должен позаботиться о возможных последствиях автоматического преобразования типов.

Пример, показанный ниже, будет работать.

#include 
#include 
 
using namespace std;
 
int main(int argc, char *argv[])
{
  int   x = 30;
  float z = 20.9;
  x = x + z; 	//Нет ошибки!!!
  cout << "30 + 20,9 = " << x << endl;
 
  system("PAUSE");
  return EXIT_SUCCESS;
}

Ошибки во время компиляции не возникнет (в отличие от Паскаля). Однако в результате х у нас будет равен 50, а не 50,9, как это должно быть.

В Паскале подобный код вызвал бы ошибку компиляции, и программа не была бы создана. Но зато вы и не получили бы проблемы с точностью!

В С/С++ ошибки компиляции не произойдёт, но ответственность за результат целиком ложится на программиста.

Некоторые компиляторы С++ (в том числе и компилятор, используемый Dev-C++) выдадут в таком случае предупреждение, чтобы обратить внимание программиста на возможные проблемы. Однако программа будет откомпилирована без ошибок.

Что считать достоинством, а что недостатком? У каждого свои предпочтения.

Отчасти по этим причинам язык С/С++ считается более сложным. Программировать на этом языке лучше профессионалу.

Однако это не значит, что программист на Паскале не может быть профессионалом. Как я уже неоднократно говорил: не бывает плохих языков программирования - бывают плохие программисты.



Инфо-МАСТЕР ®
Все права защищены ©
e-mail: mail@info-master.su

Яндекс.Метрика