나는 방금 sizeof
연산자를 테스트하기 위해 무언가를 썼다.(2 * 3.14f)의 유형은 무엇입니까?
첫째,이 프로그램을 만들면 GCC에서 경고합니다.
main(){
printf("%d", (2*3.14f));
}
// test.c|2|warning: format '%d' expects argument of type 'int',
// but argument 2 has type 'double' [-Wformat=]
그래서 GCC는 (2*3.14f)
의 유형 double
믿고있다.
나는 sizeof
연산자를 추가했습니다. 출력은 정확히 8이 될 것이며, 이는 double
의 크기입니다.
main(){
printf("%d", sizeof(2*3.14f));
}
//Output: 4
이것은 정말로 혼란 스럽습니다. 질문은 다음과 같습니다. (2*3.14f)
의 유형은 무엇입니까?