유형 캐스팅은 한 데이터 유형에서 다른 데이터 유형으로 변수를 변환하는 방법입니다. 예를 들어, 'long' 값을 간단한 정수로 저장하려면 'long'을 'int'로 캐스트할 수 있습니다. 캐스트 연산자를 사용하여 명시적으로 값을 한 유형에서 다른 유형으로 변환할 수 있습니다. 다음과 같이 -
(type_name) expression
캐스트 연산자가 하나의 정수 변수를 다른 변수로 나누는 것이 부동 소수점 연산으로 수행되도록 하는 다음 예를 고려하십시오 -
예시
#include <stdio.h> main() { int sum = 17, count = 5; double mean; mean = (double) sum / count; printf("Value of mean : %f\n", mean ); }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Value of mean : 3.400000
여기서 캐스트 연산자는 나눗셈보다 우선하므로 sum 값은 먼저 double 유형으로 변환되고 마지막으로 double을 생성하는 count로 나뉩니다. 가치.
유형 변환은 컴파일러에 의해 자동으로 수행되는 암시적이거나 캐스트 연산자를 사용하여 명시적으로 지정될 수 있습니다. 유형 변환이 필요할 때마다 캐스트 연산자를 사용하는 것은 좋은 프로그래밍 방법으로 간주됩니다.
정수 승격
정수 승격은 int 또는 unsigned int보다 "작은" 정수 유형의 값이 int로 변환되는 프로세스입니다. 또는 부호 없는 정수 . 정수로 문자를 추가하는 예를 고려하십시오 -
예시
#include <stdio.h> main() { int i = 17; char c = 'c'; /* ascii value is 99 */ int sum; sum = i + c; printf("Value of sum : %d\n", sum ); }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Value of sum : 116
여기서 sum 값은 116인데 컴파일러가 정수 승격을 하고 실제 덧셈 연산을 수행하기 전에 'c' 값을 ASCII로 변환하기 때문입니다.
일반적인 산술 변환
일반적인 산술 변환 값을 공통 유형으로 캐스팅하기 위해 암시적으로 수행됩니다. 컴파일러는 먼저 정수 승격을 수행합니다. 피연산자의 유형이 여전히 다른 경우 다음 계층 구조에서 가장 높은 유형으로 변환됩니다. -
할당 연산자나 논리 연산자 &&및 ||에 대해서는 일반적인 산술 변환이 수행되지 않습니다. 개념을 이해하기 위해 다음 예를 들어 보겠습니다. -
예시
#include <stdio.h> main() { int i = 17; char c = 'c'; /* ascii value is 99 */ float sum; sum = i + c; printf("Value of sum : %f\n", sum ); }
출력
Value of sum : 116.000000
여기에서 첫 번째 c가 정수로 변환된다는 것을 이해하는 것은 간단하지만 최종 값이 double이므로 일반적인 산술 변환이 적용되고 컴파일러는 i와 c를 'float'으로 변환하고 더하여 'float' 결과를 산출합니다.피>