일반적으로 C에서는 변수 선언의 데이터 유형을 컴퓨터에 알려야합니다. 예를 들어 다음 프로그램에서 두 개의 부동 소수점 숫자 X와 Y의 합을 인쇄하려고합니다.
#include<stdio.h>
main()
{
float X=5.2;
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
컴파일러에게 변수 X의 유형을 알려 주어야했습니다.
- 컴파일러
X
가 자체 유형을 결정할 수 없습니까 ?
예, 이렇게하면 가능합니다.
#define X 5.2
이제 컴파일러에게 다음과 X
같은 유형을 알려주지 않고 프로그램을 작성할 수 있습니다 .
#include<stdio.h>
#define X 5.2
main()
{
float Y=5.1;
float Z;
Z=Y+X;
printf("%f",Z);
}
따라서 C 언어에는 자체적으로 데이터 유형을 결정할 수있는 기능이 있습니다. 필자의 경우 X
float 유형 이라고 결정했습니다 .
- main ()에서 무언가를 선언 할 때 왜 데이터 유형을 언급해야합니까? 왜 컴파일러는 자체에 변수의 데이터 유형 판별 할 수
main()
는에서와 같이가#define
.
#define X 5.2
, X
그것은 문자 그대로와 전처리 할 대체되도록 상수, 변수가 아니라 5.2
당신이 언급 어디서나 X
. 을 재 할당 할 수 없습니다 X
.
auto
은 실제로 원하는 것을 수행합니다). 반면에, 코드가하는 일을 알고 있다고 생각하고 실제로 다른 것을 입력했다면, 이와 같은 정적 타이핑은 큰 문제가되기 전에 일찍 오류를 잡을 것입니다. 정적 타이핑, 유형 유추, 동적 타이핑 등 모든 언어가 균형을 이룹니다. 일부 작업의 경우 추가 타이핑이 실제로 가치가 있습니다. 다른 사람들에게는 낭비입니다.
5.2
A는double
최초 프로그램으로 이중 리터럴 반올림하므로float
정밀도 제 발사 5.1 위로의 이중 표현하는 동안, 다음, 수레로 추가double
하고에 추가double
하여 값 5.2double
첨가, 다음 에 그 계산 결과를 반올림float
정밀도 . 반올림이 다른 위치에서 발생하기 때문에 결과가 다를 수 있습니다. 이것은 동일한 프로그램의 동작에 영향을 미치는 변수 유형에 대한 하나의 예일뿐입니다.