Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Язык C

Приведение типов в C:преобразование типов, неявное, явное с примером

Что такое приведение типов в C?

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

Программирование на языке C обеспечивает два типа операций приведения типов:

  1. Неявное приведение типов
  2. Явное приведение типов

Неявное приведение типов

Неявное приведение типов означает преобразование типов данных без потери их первоначального значения. Этот тип приведения типов необходим, если вы хотите изменить типы данных без изменение значимости значений, хранящихся внутри переменной.

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

#include<stdio.h>
int main(){
	short a=10; //initializing variable of short data type
	int b; //declaring int variable
	b=a; //implicit type casting
	printf("%d\n",a);
	printf("%d\n",b);
}

Вывод:

10
10

  1. В данном примере мы объявили переменную типа данных short со значением, инициализированным равным 10.
  2. Во второй строке мы объявили переменную типа данных int.
  3. В третьей строке мы присвоили значение переменной s переменной a. В третьей строке выполняется неявное преобразование типов, поскольку значение переменной s, имеющей тип данных short, копируется в переменную a, имеющую тип данных int.

Преобразование символов в Int

Рассмотрим пример добавления символа, декодированного в ASCII, с целым числом:

#include <stdio.h>
main() {
   int  number = 1;
   char character = 'k'; /*ASCII value is 107 */
   int sum;
   sum = number + character;
   printf("Value of sum : %d\n", sum );
}

Вывод:

 Value of sum : 108

Здесь компилятор выполнил целочисленное преобразование, преобразовав значение «k» в ASCII перед выполнением фактической операции сложения.

Иерархия арифметического преобразования

Компилятор сначала выполняет преобразование символа в целое число. Если операнды по-прежнему имеют разные типы данных, они преобразуются в самый высокий тип данных, который отображается в следующей иерархической диаграмме:

<центр>

<рисунок>

Иерархия арифметического преобразования

Рассмотрим следующий пример, чтобы понять концепцию:

#include <stdio.h>
main() {
   int  num = 13;
   char c = 'k'; /* ASCII value is 107 */
   float sum;
   sum = num + c;
   printf("sum = %f\n", sum );}

Вывод:

 sum = 120.000000

Во-первых, переменная c преобразуется в целое число, но компилятор преобразует num и с в «плавающий» и добавляет их для получения результата «плавающий».

Важные моменты о неявных преобразованиях

Мы не можем выполнять неявное приведение типов к типам данных, которые несовместимы друг с другом, например:

  1. Преобразование числа с плавающей запятой в целое приведет к усечению дробной части, что приведет к потере значения значения.
  2. Преобразование значений типа double в число с плавающей запятой приведет к округлению цифр в большую сторону.
  3. Преобразование long int в int приведет к удалению избыточных битов старшего разряда.

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

Программирование на языке C предоставляет другой способ приведения типов — явное приведение типов.

Явное приведение типов

При неявном преобразовании типов тип данных преобразуется автоматически. Есть несколько сценариев, в которых нам может потребоваться принудительное преобразование типов. Предположим, у нас есть переменная div, в которой хранится деление двух операндов, объявленных как тип данных int.

 int result, var1=10, var2=3;
result=var1/var2;

В этом случае после деления переменных var1 и var2 результат, хранящийся в переменной «результат», будет в целочисленном формате. Всякий раз, когда это происходит, значение, хранящееся в переменной «результат», теряет свое значение, потому что оно не учитывает дробную часть, которая обычно получается при делении двух чисел.

Чтобы принудительно преобразовать тип в таких ситуациях, мы используем явное приведение типов.

Требуется оператор приведения типов. Общий синтаксис операций приведения типов следующий:

(type-name) expression

Здесь

Давайте напишем программу, чтобы продемонстрировать, как приводить типы в C с явным приведением типов.

#include<stdio.h>
int main()
{
	float a = 1.2;
	//int b  = a; //Compiler will throw an error for this
	int b = (int)a + 1;
	printf("Value of a is %f\n", a);
	printf("Value of b is %d\n",b);
	return 0;
}

Вывод:

Value of a is 1.200000
Value of b is 2

  1. Мы инициализировали переменную a типа float.
  2. Далее у нас есть еще одна переменная b целочисленного типа данных. Поскольку переменные «a» и «b» имеют разные типы данных, «C» не позволит использовать такое выражение, и это вызовет ошибку. В некоторых версиях C выражение будет оцениваться, но результат будет нежелательным.
  3. Чтобы избежать таких ситуаций, мы присвоили переменной «a» тип float. Используя методы явного приведения типов, мы успешно преобразовали число с плавающей запятой в тип данных integer.
  4. Мы напечатали значение «a», которое по-прежнему является числом с плавающей точкой.
  5. После приведения типов результатом всегда будет целое число b.

Таким образом, мы можем реализовать явное приведение типов в программировании на C.

Обзор

Помните о следующих правилах практики программирования при работе с различными типами данных, чтобы предотвратить потерю данных:


Язык C

  1. Преобразование типов С#
  2. Преобразование типов Python и приведение типов
  3. Приведение типов Java
  4. Что мне делать с данными ?!
  5. Оператор C++ Switch Case с ПРИМЕРОМ
  6. Тип данных Char C++ с примерами
  7. Структура С++ с примером
  8. std::list в C++ с примером
  9. С# — Типы данных
  10. С# — преобразование типов