號運算子,printf函式,進製輸出的例題詳解

2021-08-04 23:56:51 字數 830 閱讀 3310

char a='a'; int b=20;

printf ("%d,%o",(a=a+1,a+b,b),a+'a'-'a',b) 

首先,應該說明的是在不同的編譯環境中結果是不一樣的。 

在vc++6.0中的規則: printf函式的執行順序是由右到左的

舉個例子1:

int a=65,b=20;

printf("%d,%d\n",b=a+1,a=a+1);

輸出結果是:67,66

而不是:66,66

例子2:

int a=65,b=20;

printf ("%d,%d",b=a+1,b+1,a=a+1);

輸出結果是:67,21

第乙個%d與b=a+1替換  第二個%d與剩下的替換  順序右到左

先算a=a+1=66  替換 第二個 %d  

再算b+1  =21  替換 第二個 %d

再算b=a+1=67  替換 第乙個 %d

例子3:

int a=65,b=20;

printf ("%d,%d",(b=a+1,b+1),b-5,a=a+1);

輸出結果是:67,61

第乙個%d與 括號裡的 替換,  第二個%d與剩下的替換

括號優先順序最高,先算括號裡的,括號裡內容相當於逗號表示式,順序從左到右。

餘下的順序從右到左

先算b=a+1=66 替換 第乙個 %d

再算b+1  =67 替換 第乙個 %d

再算a=a+1=66 替換 第二個 %d

再算b-5  =61 替換 第二個 %d

這題的答案是20,142  過程與 例子3 相似

運算子 進製

二進位制 0.1 滿2進1 以0b或0b開頭 乙個位元組 8 位 14符號位65 4321 00為 1為 00 0111 0首位符號位 0表示正數 1 23 1 22 1 21 0 20 8 4 2 14 正數三碼一樣 原始碼,反碼,補碼 將14的二進位制0000 1110最高位改為1 得到1000...

java進製 運算子

二進位制 0,1,滿2進1.以0b或0b開頭。十進位制 0 9,滿10進1.八進位制 0 7,滿8進1.以數字0開頭表示。十六進製制 0 9 及a f,滿16進1.以0x或0x開頭表示。此處的a f不區分大小寫。十進位制 二進位制互轉 15 1 2 0 1 2 1 1 2 2 1 2 3 運算子 運...

運算子和進製轉化

int ret 12 15 先計算賦值號的右側 將右側的計算結果儲存在變數中 console.writeline ret int ret1 12 5 console.writeline ret1 ret2 3 9 console.writeline ret2 整數 整數 得到整數 如果不整除 那麼得...