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補碼 怎麼理解

回答好有加分

C 語言基礎 輸出 問題liu_pu 2008-07-20

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)

希望能幫助你 *^_^*

C 語言基礎 輸出 問題epmhm 2008-07-20

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;

C 語言基礎 輸出 問題ryw12403 2008-08-04

liu_pu

ok

Top