2016-03-21 4 views
-3

Hier ist mein Code, dass ich diesen Fehler erhalten auf.Format gibt den Typ 'int' an, aber das Argument hat den Typ 'unsigned long' Fehler beim Drucken Größen

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

Ich kopierte den Code aus der Vorlesung, so dass ich nicht weiß, was los ist. Jede Hilfe wird geschätzt!

#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

Das Ergebnis 'sizeof()' ist vom Typ 'size_t', nicht' int'. Verwende '"% zi "' oder caste nach '(int)'. – EOF

+0

Probieren Sie '% zu' statt'% i' aus. – owacoder

Antwort

2

Die Ergebnisse sizeof Betreibers size_t Typ, die ein Typ ohne Vorzeichen ist. Um sie zu drucken, verwenden Sie printf("%zu", ...);.

In Ihrem Fall, die in der Tat

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

zu printf() Aussagen ändern, brauchen Sie nicht eine Variable für jeden Typ zu erstellen. Sie können nur

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

Auch schreiben die Größe size_t Art zu untersuchen:

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

, die

entspricht
printf("size_t: %zu\n", sizeof sizeof (char/int/float/double/...)); 
Verwandte Themen