2016-06-16 8 views
0
내가는 sizeof 연산자 시도

(VS 코드를 맥)내 sizeof 연산자에 문제가 있습니까?

#include <stdio.h> 

int main() 
{ 
    char i; 
    int j; 
    double k; 

    printf("%d\n", sizeof(i)); 
    printf("%d\n", sizeof(j)); 
    printf("%d\n", sizeof(k)); 

    return 0; 
} 

하지만 경고가 말한다 :

warning: format specifies type 'int' but the argument has type 'unsigned long' [-Wformat] 
printf("%d\n", sizeof(k)); 
     %lu 

에 어떤 문제가 있습니까? 나는 구문에 아무런 문제가 없다고 생각하며 출력을 보여줍니다.

+0

size_t로 인쇄를위한 올바른 지정이는 C++ 질문, 또는 C 또는 뭔가 다른가요? 언어 태그를 추가하십시오. –

답변

0

sizeof 연산자에 아무런 문제가 없습니다.
printf에 대해 잘못된 지정자를 사용하고 있습니다.

sizeofsize_t을 반환합니다.
size_t의 실제 유형은 구현에 따라 정의됩니다. 이와 같이
, %z

사용 printf("%zu\n", sizeof(k));

+0

마이크로 소프트가'% zu'를 지원하는지 모르겠습니다. 그래서 작동하지 않는다면 다른 옵션은'printf ("% d \ n", (int) sizeof i);' –

+1

OP의 컴파일러처럼 보입니다. '% lu '을 (를) 제안합니다. –

+0

"% zu", "% lu"및 "(int) sizeof"가 모두 효과가 있습니다. 감사. –