C 언어 데이터 유형 변환 방법
데이터 유형 변환은 데이터(변수, 값, 표현식의 결과 등)를 한 유형에서 다른 유형으로 변환하는 것입니다.
자동 유형 변환
자동 유형 변환은 컴파일러에 의해 자동, 암시적, 비밀리에 수행되는 데이터 유형 변환입니다. 이 변환은 프로그래머 개입이 필요하지 않으며 자동으로 발생합니다.
1) 한 유형의 데이터가 다른 유형의 변수에 할당되면 자동 유형 변환이 발생합니다. 예:
float f = 100;
100은 int 유형 데이터이므로 변수 f에 할당하려면 먼저 float 유형으로 변환해야 합니다. 또 다른 예:
int n = f;
f는 부동 소수점 유형 데이터이며 변수 n에 할당되기 전에 int 유형으로 변환되어야 합니다.
대입 연산에서 할당 번호 양쪽의 데이터 타입이 다를 경우 오른쪽 표현식의 타입을 왼쪽 변수의 타입으로 변환해야 하는데, 이로 인해 데이터가 왜곡되거나 축소될 수 있습니다. 정확성 따라서 자동 유형 변환이 반드시 안전한 것은 아닙니다. 컴파일러는 일반적으로 안전하지 않은 유형 변환에 대해 경고를 표시합니다.
2) 서로 다른 유형의 혼합 연산에서 컴파일러는 자동으로 데이터 유형을 변환하여 연산에 관련된 모든 데이터를 먼저 동일한 유형으로 변환한 후 계산을 수행합니다. 변환 규칙은 다음과 같습니다.
값이 왜곡되거나 정확도가 떨어지지 않도록 데이터 길이를 늘리는 방향으로 변환이 수행됩니다. 예를 들어 int와 long이 연산에 관여하는 경우 연산을 수행하기 전에 먼저 int 유형의 데이터를 long 유형으로 변환합니다.
모든 부동 소수점 연산은 배정밀도로 수행됩니다. 연산에 부동 소수점 유형만 있더라도 연산을 수행하려면 배정밀도로 변환해야 합니다.
char 및 short가 연산에 참여할 때 먼저 int 유형으로 변환해야 합니다.
다음 그림은 이 변환 규칙을 더욱 생생하게 설명합니다.
unsigned도 unsigned int입니다. 이때 int를 생략하고 그냥 unsigned라고 쓰면 됩니다.
자동 유형 변환 예:
#include<stdio.h> int main(){ float PI = 3.14159; int s1, r = 5; double s2; s1 = r * r * PI; s2 = r * r * PI; printf("s1=%d, s2=%f\n", s1, s2); return 0; }
실행 결과:
s1=78, s2=78.539749
r*r*PI 수식을 계산하면 r과 PI가 모두 double 유형으로 변환되고, 수식의 결과도 double 유형이 됩니다. 그러나 s1이 정수이기 때문에 할당 연산의 결과는 여전히 정수이고, 소수 부분은 버려져 데이터 왜곡이 발생한다.
프로그래밍과 관련된 더 많은 내용은 PHP 중국어 홈페이지 프로그래밍 입문 칼럼을 주목해주세요!
위 내용은 C 언어 데이터 유형 변환 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!