Неявные преобразования
Автоматическое продвижение типов
«Неявные преобразования» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- Неявные преобразования
- Явные приведения
- Преобразование целых и вещественных чисел
- Ошибки преобразования