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

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

Все способы изучить С++ Все способы изучить С++

Начинающие программисты даже не догадываются о том, какой огромный пласт в этой области скрыт от их глаз, и чего многие из новичков не увидят никогда, потому что это тёмная сторона программирования - чистый исходный код системного уровня… Подробнее...

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

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

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

#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++) выдадут в таком случае предупреждение, чтобы обратить внимание программиста на возможные проблемы. Однако программа будет откомпилирована без ошибок.

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

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

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


Как стать программистом 2.0 Как стать программистом 2.0

Эта книга для тех, кто хочет стать программистом. На самом деле хочет, а не просто мечтает. И хочет именно стать программистом с большой буквы, а не просто научиться кулебякать какие-то примитивные программки… Подробнее...

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

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