Приведение типов. Часть 1
Часть раздела Основы путешествия по C на Coddy. Урок 13 из 63.
Приведение типов в C позволяет преобразовать значение из одного типа данных в другой. Это полезно, когда вам нужно выполнять операции между разными типами данных.
Существует два основных типа приведения типов:
- Implicit casting (автоматическое)
- Explicit casting (ручное)
Начнём с неявного приведения типов:
Неявное приведение типов происходит автоматически при преобразовании из меньшего типа данных в больший:
int num = 10;
double decimal_num;
// Неявное приведение из int в double
decimal_num = num;После выполнения приведённого выше кода decimal_num будет иметь значение 10.0
Это работает, потому что double может хранить все возможные значения int без потери каких-либо данных. Преобразование безопасно, поэтому C выполняет его автоматически.
Распространённые пути неявного приведения типов:
- char → int → long → float → double
Теперь рассмотрим явное приведение типов:
Explicit casting выполняется вручную: целевой тип данных помещается в скобки перед значением, которое вы хотите convert. Это необходимо при преобразовании из большего типа данных в меньший, где может произойти потеря данных:
double decimal_num = 5.65;
int num;
// Явное приведение типа из double в int
num = (int)decimal_num;После выполнения приведённого выше кода num будет иметь значение 5
Обратите внимание, что десятичная часть truncated (не rounded) при casting из double в int. Синтаксис для explicit casting:
(target_type) valueПоскольку при этом преобразовании могут быть потеряны данные, C требует выполнять его явно. Это сообщает компилятору, что вы знаете о возможной потере данных.
Задание
ЛегкоНапишите программу, которая:
- Объявляет переменную типа double
resultи присваивает ей значение 5.65 - Объявляет переменную типа int
grade - Присваивает значение
resultпеременнойgrade, используя explicit casting - Выводит значение
gradeс сообщением "The grade is: " с помощью printf
Попробуйте сами
#include <stdio.h>
int main() {
double result = 5.65;
int grade;
// Используйте явное приведение типов, чтобы преобразовать result (double) в grade (int)
printf("The grade is: %d\n", grade);
return 0;
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
2Переменные
Типы данныхЦелые числаFloat и DoubleСимволыЛогический типКонстантыОсновы printfПравила именования переменныхПриведение типов. Часть 1Приведение типов. Часть 2Итоговое задание3Операторы
Арифметические операторыОператор остатка от деленияИнкремент и декрементОператоры присваиванияОператоры сравненияЛогические операторы. Часть 1Логические операторы. Часть 2Логические операторы. Часть 3Задание на повторениеПотренируйтесь самостоятельно: Онлайн-компилятор C