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

       

Неявное преобразование типов


Язык определяет набор стандартных преобразований между объектами встроенного типа, неявно выполняющихся компилятором в следующих случаях:

  • арифметическое выражение с операндами разных типов: все операнды приводятся к наибольшему типу из встретившихся. Это называется арифметическим преобразованием. Например:
  • int   ival = 3;

    double dva1 = 3.14159;

    // ival преобразуется в double: 3.0

    ival + dva1;

    • присваивание значения выражения одного типа объекту другого типа. В этом случае результирующим является тип объекта, которому значение присваивается. Так, в первом примере литерал 0 типа int присваивается указателю типа int*, значением которого будет 0. Во втором примере double преобразуется в int.
    • // 0 преобразуется в нулевой указатель типа int*

      int *pi = 0;

      // dva1 преобразуется в int: 3

      ivat = dva1;

      • передача функции аргумента, тип которого отличается от типа соответствующего формального параметра. Тип фактического аргумента приводится к типу параметра:
      • extern double sqrt( double );

        // 2 преобразуется в double: 2.0

        cout << "Квадратный корень из 2: " << sqrt( 2 ) << endt;

        • возврат из функции значения, тип которого не совпадает с типом возвращаемого результата, заданным в объявлении функции. Тип фактически возвращаемого значения приводится к объявленному. Например:
        • double difference( int ivati, int iva12 )

          {

              // результат преобразуется в double

              return ivati - iva12;

          }



          Содержание раздела