C 語言基礎 輸出 問題
- 2022-07-31
float x=67。8564,y=-789。124;
long n=1234567;
unsigned u=65535;
printf(“%8。2f,%8。2f,%。4f,%。4f,%3f,%3f\n”,x,y,x,y,x,y); 輸出什麼?
printf(“%ld,%lo,%x\n”,n,n,n); 為什麼輸出是123456 而不是1234567
printf(“%d\n”,u); -1補碼 怎麼理解
回答好有加分
1。輸出 三個空格67。86,一個空格-789。12,67。8564,-789。1240,67。856400,-789。124000
2。輸出 1234567,4553207,d687(我檢驗過,就是這個結果,應該是1234567)
3。輸出 -1(65535表示成二進位制為1111111111111111,剛好16位,並且最高位是1,為符號位,因此,用整形輸出時應該是負數,所謂補碼,在計算機記憶體中數值是用補碼形式表示的,一個正整數的補碼和原數<即該數的二進位制形式>相同。若數值是負數,在記憶體中表示為,將該數的絕對值的二進位制形式按位取反加1得到,所以按照這種演算法,最後輸出的結果是-1)
希望能幫助你 *^_^*
printf(“%8。2f,%8。2f,%。4f,%。4f,%3f,%3f\n”,x,y,x,y,x,y); 輸出67。86,-789。12,67。8564,-789。1240,67。856400,-789。124023
printf(“%ld,%lo,%x\n”,n,n,n);輸出的是1234567,4553207,12d687;
printf(“%d\n”,u);輸出的是-1;因為%d是輸出帶符號的十進位制整數,第一位是符號位1,其餘全為1,這是補碼形式,這樣算出來的真值就是-1。如果你用printf(“%u”,u);則輸出65535;
liu_pu
ok