0Pricing
C Academy · Урок

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

Автоматическое продвижение типов

«Неявные преобразования» — бесплатный урок C Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения C Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс C Academy содержит 4 уроков всего.

Что такое преобразование

Когда C объединяет значения разных типов, он автоматически преобразует один тип в другой. Это называется неявным преобразованием.

#include <stdio.h>
int main(void) {
    int i = 5;
    double d = i;
    printf("d = %.1f\n", d);
    return 0;
}

Продвижение целых типов

Малые целые типы, такие как char и short, перед арифметическими операциями преобразуются в int.

#include <stdio.h>
int main(void) {
    char a = 10, b = 20;
    int sum = a + b;
    printf("sum = %d\n", sum);
    return 0;
}

Обычные арифметические преобразования

В смешанном выражении операнд с более узким типом преобразуется к более широкому, чтобы перед операцией оба операнда имели совместимый тип.

#include <stdio.h>
int main(void) {
    int i = 3;
    double d = 2.0;
    printf("%.1f\n", i + d);
    return 0;
}

Преобразование int в double

При присваивании int переменной типа double значение безопасно расширяется и сохраняется без изменений.

#include <stdio.h>
int main(void) {
    int count = 7;
    double avg = count;
    printf("avg = %.1f\n", avg);
    return 0;
}

Преобразование double в int отбрасывает дробную часть

При присваивании double переменной типа int дробная часть отбрасывается. Округления не происходит.

#include <stdio.h>
int main(void) {
    double d = 9.99;
    int n = d;
    printf("n = %d\n", n);
    return 0;
}

char и int

char хранит небольшое целое число — код символа. Поэтому он естественным образом преобразуется в int.

#include <stdio.h>
int main(void) {
    char c = 'A';
    int code = c;
    printf("code = %d\n", code);
    return 0;
}

Преобразования при присваивании

Во время присваивания правая часть преобразуется к типу левой части.

#include <stdio.h>
int main(void) {
    double pi = 3;
    printf("pi = %.1f\n", pi);
    return 0;
}

Неожиданность смешанного деления

5 / 2 — это целочисленное деление, результат которого равен 2. Преобразуйте один из операндов в double, чтобы получить обычное деление.

#include <stdio.h>
int main(void) {
    printf("%.1f\n", 5 / 2.0);
    return 0;
}

Преобразования, похожие на булевы

В условиях любое ненулевое значение преобразуется в true, а нулевое — в false.

#include <stdio.h>
int main(void) {
    int x = 3;
    if (x)
        printf("nonzero is true\n");
    return 0;
}

Преобразование возвращаемого значения

Возвращаемое значение преобразуется к типу, указанному для возвращаемого значения функции. Возврат double из функции типа int отбрасывает дробную часть.

#include <stdio.h>
int half(int n) {
    return n / 2;
}
int main(void) {
    printf("%d\n", half(7));
    return 0;
}

Передача аргументов

Аргументы преобразуются к типу параметра, если прототип находится в области видимости.

#include <stdio.h>
void show(double d) {
    printf("%.1f\n", d);
}
int main(void) {
    show(5);
    return 0;
}

Быстрая проверка

Проверьте своё понимание неявных преобразований.

Итоги: неявные преобразования

Вы изучили автоматические преобразования типов.

  • C преобразует операнды к общему типу
  • Малые целые типы продвигаются к int
  • Преобразование int в double безопасно расширяет значение
  • Преобразование double в int отбрасывает дробную часть
  • Целочисленное деление может приводить к неожиданностям, если ни один операнд не является double

Часто задаваемые вопросы

Урок «Неявные преобразования» бесплатный?

Да — полный текст урока «Неявные преобразования» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс C Academy, подпишись на CoddyKit PRO. Курс C Academy содержит 4 уроков всего.

Чему я научусь в уроке «Неявные преобразования»?

Автоматическое продвижение типов Ты практикуешь C Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать C Academy?

Предыдущий опыт не требуется. C Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Неявные преобразования»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке C Academy?

Да. Каждый урок C Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Неявные преобразования
  2. Явные приведения
  3. Преобразование целых и вещественных чисел
  4. Ошибки преобразования
← Назад к C Academy