我知道unsigned int *和int *不兼容。但是因爲i,j是int *(int指針),那麼它們如何使用無符號類型進行打印。爲什麼它會輸出0!爲什麼輸出是這樣的?
#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();
}
輸出:
*k=0 j=0 i=0
它的295℃的問題,其中一個問題,我只是想了解是什麼在此代碼發生的事情!我沒有寫這個代碼!
用於使用具有自動存儲持續時間的對象的值,而它沒有被初始化未定義行爲,未定義的行爲:
此外應使用%P
實施例輸出打印指針值將錯誤的類型傳遞給'printf()'。 – EOF
這裏真正的問題是'i'和'j'都沒有被定義,因此也不是'* k'。你所做的只是打印未定義的值。至於格式,你是對的,'%u'應該傳遞'unsigned int'。 –
使用正確的格式說明符來打印指針..閱讀此鏈接。可能對你有用..http://stackoverflow.com/questions/9053658/correct-format-specifier-to-print-pointer-address – sas