Menu
Coddy logo textTech

Приведение типов. Часть 1

Часть раздела Основы путешествия по C на Coddy. Урок 13 из 63.

Приведение типов в C позволяет преобразовать значение из одного типа данных в другой. Это полезно, когда вам нужно выполнять операции между разными типами данных.

Существует два основных типа приведения типов:

  1. Implicit casting (автоматическое)
  2. 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 требует выполнять его явно. Это сообщает компилятору, что вы знаете о возможной потере данных.

challenge icon

Задание

Легко

Напишите программу, которая:

  1. Объявляет переменную типа double result и присваивает ей значение 5.65
  2. Объявляет переменную типа int grade
  3. Присваивает значение result переменной grade, используя explicit casting
  4. Выводит значение 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;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Онлайн-компилятор C