산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

C의 유형 캐스팅:유형 변환, 암시적, 예와 함께 명시적

C에서 Typecasting이란 무엇입니까?

Typecasting은 하나의 데이터 유형을 다른 데이터 유형으로 변환하는 것입니다. 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. 주어진 예에서 값이 10으로 초기화된 짧은 데이터 유형의 변수를 선언했습니다.
  2. 두 번째 줄에서는 int 데이터 유형의 변수를 선언했습니다.
  3. 세 번째 줄에서 변수 s의 값을 변수 a에 할당했습니다. 세 번째 줄에서 암시적 유형 변환은 short 데이터 유형인 변수 s의 값이 int 데이터 유형인 변수 a로 복사될 때 수행됩니다.

문자를 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 c "float"에 추가하고 'float' 결과를 생성합니다.

암시적 전환에 대한 중요 사항

다음과 같이 서로 호환되지 않는 데이터 유형에 대해서는 암시적 유형 캐스팅을 수행할 수 없습니다.

  1. float를 int로 변환하면 분수 부분이 잘려서 값의 의미를 잃게 됩니다.
  2. double을 float로 변환하면 숫자가 반올림됩니다.
  3. long int를 int로 변환하면 초과 상위 비트가 삭제됩니다.

위의 모든 경우에 데이터 유형을 변환하면 값이 의미를 잃게 됩니다. 일반적으로 값의 의미 손실은 컴파일러에서 경고합니다.

'C' 프로그래밍은 명시적 유형 캐스팅인 또 다른 유형 캐스팅 방법을 제공합니다.

명시적 유형 캐스팅

암시적 형식 변환에서는 데이터 형식이 자동으로 변환됩니다. 형식 변환을 강제해야 하는 몇 가지 시나리오가 있습니다. int 데이터 유형으로 선언된 두 피연산자의 나눗셈을 저장하는 변수 div가 있다고 가정합니다.

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

이 경우 변수 var1 및 var2에 대해 수행한 나눗셈 후 변수 "result"에 저장된 결과는 정수 형식이 됩니다. 이런 일이 발생할 때마다 "result" 변수에 저장된 값은 일반적으로 두 숫자의 나눗셈에서 구해지는 분수 부분을 고려하지 않기 때문에 의미를 잃습니다.

이러한 상황에서 유형 변환을 강제하기 위해 명시적 유형 캐스팅을 사용합니다.

유형 캐스팅 연산자가 필요합니다. 유형 캐스팅 작업의 일반 구문은 다음과 같습니다.

(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. 플로트 유형의 변수 '''를 초기화했습니다.
  2. 다음으로 정수 데이터 유형의 또 다른 변수 'b'가 있습니다. 변수 'a'와 'b'는 데이터 유형이 다르기 때문에 'C'는 이러한 표현식의 사용을 허용하지 않으며 오류가 발생합니다. 일부 버전의 'C'에서는 표현식이 평가되지만 결과는 원하지 않습니다.
  3. 이러한 상황을 피하기 위해 float 유형의 변수 '''를 형변환했습니다. 명시적 유형 캐스팅 방법을 사용하여 float를 데이터 유형 정수로 성공적으로 변환했습니다.
  4. 여전히 float인 ''의 값을 출력했습니다.
  5. 타입 캐스팅 후 결과는 항상 정수 'b'가 됩니다.

이런 식으로 C 프로그래밍에서 명시적 유형 캐스팅을 구현할 수 있습니다.

요약

데이터 손실을 방지하기 위해 다른 데이터 유형을 다룰 때 프로그래밍 실습에 대한 다음 규칙을 기억하십시오.


C 언어

  1. C# 유형 변환
  2. Python 유형 변환 및 유형 캐스팅
  3. 자바 타입 캐스팅
  4. 데이터로 무엇을 해야 합니까?!
  5. EXAMPLE이 있는 C++ Switch Case 문
  6. C++ Char 데이터 유형(예제 포함)
  7. 예제가 있는 C++ 구조체
  8. 예제가 있는 C++의 std::list
  9. C# - 데이터 형식
  10. C# - 유형 변환