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 整數 整數 得到整數 如果不整除 那麼得...