2016-03-21 31 views
-3

boyutlarını yazdırırken argümanın 'unsigned long' hatası vardır. İşte bu hatayı alıyorum.Biçim, 'int' türünü belirtir, ancak

format specifies type 'int' but the argument has type 'unsigned long' 

Kodu sorundan kopyaladım, böylece neyin yanlış olduğunu bilmiyorum. Herhangi bir yardım takdir! sizeof operatörün

#include <stdio.h> 

int main(void) 
{ 
    char c; 
    double d; 
    float f; 
    int i; 

    printf("char: %i\n", sizeof(c)); 
    printf("double: %i\n", sizeof(d)); 
    printf("float: %i\n", sizeof(f)); 
    printf("int: %i\n", sizeof(i)); 
} 
+1

sizeof '() sonucu eşdeğerdir' tiptedir size_t değil, int değil. "% Zi" yi kullanın veya '(int)' olarak yayınlayın. – EOF

+0

'% i' yerine'% zu 'deneyin. – owacoder

cevap

2

sonuç işaretsiz türü olan size_t sahiptir. Bunları yazdırmak için printf("%zu", ...); kullanın. Senin durumunda

Aslında

printf("char: %zu\n", sizeof c); 
printf("double: %zu\n", sizeof d); 
printf("float: %zu\n", sizeof f); 
printf("int: %zu\n", sizeof i); 

için printf() ifadeleri değiştirmek, her tür için bir değişken oluşturmak için gerek yoktur. Sadece size_t türü boyutunu incelemek, aynı zamanda

printf("char: %zu\n", sizeof (char)); 
printf("double: %zu\n", sizeof (double)); 
printf("float: %zu\n", sizeof (float)); 
printf("int: %zu\n", sizeof (int)); 

yazabilirsiniz:

printf("size_t: %zu\n", sizeof (size_t)); 

,

printf("size_t: %zu\n", sizeof sizeof (char/int/float/double/...)); 
İlgili konular