Ich weiß, unsigned int * und int * sind nicht kompatibel. Aber da i, j sind int * (int Zeiger), wie werden sie mit unsigned Typ gedruckt. Und warum gibt es Ausgang 0 !!Warum ist die Ausgabe so?
#include<stdio.h>
//#include<conio.h>
main()
{
int *i,*j,**k;
//i+2;
k=&i;
printf("\n*k=%u j=%u i=%u",*k,j,i);
//getch();
}
Ausgang:
*k=0 j=0 i=0
Es ist eine der Fragen von 295 C Fragen, ich versuche nur zu verstehen, was in diesem Code passiert !! Ich habe diesen Code nicht geschrieben!
undefiniertes Verhalten für die Verwendung des Wertes eines Objekt mit automatischer Speicherdauer, während es nicht initialisiert wird, nicht definiertes Verhalten um den falschen Typ an 'printf()' zu übergeben. – EOF
Das wirkliche Problem hier ist, dass weder 'i' noch 'j' definiert sind und daher auch nicht '* k' ist. Sie drucken nur undefinierte Werte. Was die Formate angeht, hast du recht, '% u' sollte ein' unsigned int' übergeben werden. –
Verwenden Sie den richtigen Formatbezeichner, um den Zeiger zu drucken. Lesen Sie diesen Link. könnte nützlich für Sie sein..http: //stackoverflow.com/questions/9053658/correct-format-specifier-to-print-pointer-address – sas