1樓:匿名使用者
d o x u 是輸出的 不同格式 由系統內定!
系統背後有一段**來支援此屬性!
2樓:匿名使用者
short a = -1;//或者你的int被編譯為16位%d - 有符號十進位制輸出,所以是-1
%o - 8進製輸出,-1是所有位為1,16個1就是177777%x - 16進製制輸出,16個1是ffff%u - 無符號十進位制輸出,-1轉化為無符號的就是65535.
3樓:匿名使用者
1在電腦裡用補碼表示為1111111111111111(16位)在c中預設的整型為有符號的,所以%d輸出-1%u 無符號的當然是2^16-1=65535以3位為一組轉換為對應的八進位制,不夠的最高位補0,則有%o輸出177777
以4位為一組轉換為對應的16進製制,不夠的最高位補0,則有%x輸出ffff
4樓:
printf的結合性是右向左的,所以我們應該從後往前做1的記憶體存放形式是0000000000000001-1的記憶體存放形式是1111111111111111(負數補碼是按位取反加1)即65535
%x - 16進製制輸出,16個1是ffff%o - 8進製輸出,-1是所有位為1,16個1就是177777%d - 有符號十進位制輸出,所以是-1
5樓:一食三客
系統就是這樣設定的 執行出來就是這樣 不要亂想了
6樓:匿名使用者
%d - 有符號十進位制輸出,所以是-1
%o - 8進製輸出,-1是所有位為1,16個1就是177777%x - 16進製制輸出,16個1是ffff%u - 無符號十進位制輸出,-1轉化為無符號的就是65535.
7樓:匿名使用者
在c語言中,負數是用補碼表示的,根據你得出的結果來看,你使用的編譯器中int型別資料是佔4個位元組的,所以a在儲存為16個1,即-1的補碼。所以二進位制的16個1轉化成八進位制為177777,轉化為十六進製制為ffff,轉化為正整數為65535。
8樓:
printf與scanf 是輸入輸出函式 還有getchar,getch,putchar...等等 都是c語言的庫函式 是根據需要事先編出來的供使用者 使用的 至於內部怎樣 執行不用管 只要記住是幹什麼的 怎麼用就行了
9樓:匿名使用者
恩,這位大哥言之有理,從後向前在內部運算,然後輸出的。
c語言問題,C語言問題。
考驕 用指標將兩個字串連結接起來,前一個while迴圈,確定s1字串走完,第二個while開始將s1的逐個字元複製給s1走完,也就是末尾,這樣就可以把字串都匯入到s1中 最後一個空寫的應該寫return s1 長魚修韋 很久沒碰這東西了。我來解釋下 第一個while的迴圈是為了讓指標指向第一個字串的...
C語言問題,c語言問題?
自我程式設計 列印輸出乙個ok。因為前面迴圈for語句有分號結束。所以後面的printf語句不在迴圈內,不受迴圈語句影響。 理佑平鄲胭 結果是22 7 7 8 22 你可以將 i i i i是先 1再計算,還有這裡的運算順序是從左到右,所以應該是7 7 i 14 8 22 前兩個相加時,i先加1,加...
c語言問題,C語言問題?
這個問題說難不難,但理解可能有點玄乎而已,但是打個比方來理解就太容易掌握啦!就是說scanf的認定讀取,比如你單純的scanf c ch 那麼實際上已經認定了第乙個字元出現就把它賦予給ch,如果是你的scanf c 前面多了乙個空格,所以就認定了出現第乙個空格後的字元賦予給ch,如果寫成這樣 sca...