sizeof
삼항 연산자를 사용 하는 연산자 에 대한 작은 코드 조각이 있습니다 .
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool a = true;
printf("%zu\n", sizeof(bool)); // Ok
printf("%zu\n", sizeof(a)); // Ok
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
return 0;
}
출력 ( GCC ) :
1
1
4 // Why 4?
하지만 여기는,
printf("%zu\n", sizeof(a ? true : false)); // Why 4?
삼항 연산자는 boolean
유형을 반환 하고 sizeof bool
유형은 1
C의 바이트입니다.
그렇다면 왜 sizeof(a ? true : false)
4 바이트의 출력을 제공합니까?
_Bool
크기 일 수 있지만 가지고 true
와 false
. 그러나 표준은 내가 말할 수있는 한 그것에 대해 할 말이 없습니다.
char a;
sizeof(a) == 1
와 sizeof('a') == sizeof(int)
C가 주어진 이유 . 그것은 구현에 관한 것이 아니라 언어에 관한 것입니다.
sizeof(true)
? 아마도 얇은 부분을 좀 더 명확하게 만들 것입니다 (특히 삼항 연산자가 붉은 청어라는 것이 분명해질 것입니다).
true
은 #define
d가 1이 stdbool.h
되므로 예, 이것은 리터럴 정의입니다.
sizeof(true)
및sizeof(false)
도 4 : ide.geeksforgeeks.org/O5jvuN