NSInteger q = 2048;
BOOL boolQ = q;
NSLog(@"%hhd",boolQ);
을 고려 반환 BOOL에 주조?
NSInteger q = 2048;
BOOL boolQ = q;
NSLog(@"%hhd",boolQ);
을 고려 반환 BOOL에 주조?
BOOL 아마 정수의 절반 "hh"
인쇄 절반으로, char
또는/int8_t
uint8_t
로 구현됩니다. 일반적으로 1 바이트입니다.
char
으로 변환하면 2048
(= 0x800
)의 가장 낮은 8 비트를 사용하며 0
을 제공합니다.
부울 값을 임의의 정수로 변환하는 적절한 방법은 다음 변환 된 값을 표시하기에 너무 작은 형태로 정수 값 주조
가NSInteger q = some-value;
BOOL b = !!q;
C (C11 표준 부록 J.에서 정의되지 않은 동작이며 2), 따라서 C 수준의 문제를 다루는 Objective-C의 부분에서도 마찬가지입니다. 정의되지 않은 행동이기 때문에 원하는 결과를 나타낼 수 있지만 기대 값은 아닙니다.
으로 6.3.1.4 당, 정수는 !!
관용구에 상승을 제공 (다른 모든는 1, 0 0)으로는 예상되는 동작을 보여줍니다이 경우 캐스팅없이 부울 값을 을 사용할 수 있습니다 alk에 의해 제안 된; 아마도 반 직관적으로 이 아닌 값을으로 명시 적으로 변환하면됩니다 (대신에 !
연산자가 삽입 한 암시 적 변환 작업에 의해 변환이 올바르게 처리됩니다).
왜'% hhd'입니까? 나는 NSLog에서 1을 얻었다. – Larme
NSLog에 0이 있습니다. –
@DarshanKunjadiya 귀하의 요점에 대해 더 많은 설명을주십시오. 그 질문은 여기에 ... – Mani