C Приведение типов
Приведение — это преобразование переменной из одного типа в другой тип данных. Например, если вы хотите сохранить значение long в обычную целочисленную переменную, необходимо привести тип long к типу int. Вы можете использоватьоператор приведения, чтобы явно преобразовать значение из одного типа в другой, как показано ниже:
(type_name) expression
Посмотрите следующий пример: с помощью оператора приведения одна целочисленная переменная делится на другую целочисленную переменную, чтобы получить число с плавающей запятой:
Пример
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Value of mean : 3.400000
Обратите внимание, что приоритет оператора приведения выше, чем у деления, поэтомуsumзначение ... сначала преобразуется вdoubleтип, затем делится на count, в результате чего получается значение типа double.
Преобразование типов может быть неявным, выполняемым компилятором автоматически, или явным, задаваемым с помощьюоператора приведения. В программировании хорошей привычкой является использование оператора приведения всякий раз, когда требуется преобразование типов.
Целочисленное продвижение
Целочисленное продвижение — это преобразование целочисленных типов, меньших чемintилиunsigned int, вintилиunsigned intэтот процесс. Посмотрите следующий пример: добавление символа к int:
Пример
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Value of sum : 116
Здесь значение sum равно 116, потому что компилятор выполнил целочисленное продвижение, преобразовав значение 'c' в соответствующее ему значение ASCII во время фактической операции сложения.
Общие арифметические преобразования
Обычные арифметические преобразованиязаключаются в неявном приведении значений к одному и тому же типу. Сначала компилятор выполняетцелочисленное продвижение; если типы операндов различаются, они преобразуются к типу самого высокого уровня, который присутствует в следующей иерархии:
Обычные арифметические преобразования не применяются к операторам присваивания или к логическим операторам && и ||. Давайте рассмотрим следующий пример, чтобы понять эту концепцию:
Пример
Когда приведенный выше код скомпилирован и выполнен, он выдает следующие результаты:
Value of sum : 116.000000
Здесь c сначала преобразуется в целое число, но поскольку итоговое значение имеет тип float, применяются обычные арифметические преобразования. Компилятор преобразует i и c в числа с плавающей запятой, складывает их и получает число с плавающей запятой.
Другие расширения