Преобразование значения с плавающей точкой к целочисленному типусводится к "усечению", т.е. отбрасыванию дробной части. Такиепреобразования зависят от машины, в частности в какую сторону будетпроходить усечение для отрицательных чисел определяется на разныхмашинах по разному. Результат считается неопределенным, еслизначение нельзя представить в целочисленном типе. Преобразования целочисленных значений к значениям с плавающейточкой математически корректны настолько, насколько это позволяетсистема команд. Может произойти потеря точности, если целочисленноезначение нельзя точно представить как значение с плавающей точкой. R.4.5 Арифметические преобразования Для большинства операций преобразования операндов и тип результатаопределяются одними и и теми же правилами. Это правило можно назвать"обычными арифметическими преобразованиями". Если один из операндов есть long double, другой операнд преобразуется в long double. Иначе, если один из операндов есть double, другой операнд преобразуется в double. Иначе, если один из операндов есть float, другой операнд преобразуется в float. Иначе, если стандартные целочисленные преобразования ($$R.4.1) происходят над обоими операндами. Тогда, если один из операндов есть unsigned long, другой операнд преобразуется в unsigned long. Иначе, если один из операндов есть long int, а другой - unsigned int, то при условии, что long int может представлять все возможные значения unsigned int, значение unsigned int преобразуется в long int, в противном случае оба операнда преобразуются в unsigned long int. Иначе, если один из операндов есть long, другой операнд преобразуется в long. Иначе, если один из операндов есть unsigned, другой операнд преобразуется в unsigned. Иначе, оба операнда должны быть int.