為什麼輸出結果為,為什麼輸出結果為8?

2022-06-09 12:11:51 字數 822 閱讀 3075

1樓:

是先算2+a=3,然後a左移3位,相當於乘以8,輸出8,a的值是沒有變的還為1

你執行一下一下**:

#include

using namespace std;

int main()

很明顯,後來輸出的a,還是1,將a<<2+a,改成a<

2樓:

1 a << 2 + a表示a左移3位,左移1位相當於乘2,左移3位相當於乘8。上面那個式子等價於a=a*8。

2 這個二進位制00000001左移一位變成00000010,是不是相當於乘2呢?

3 加法運算優先於左移運算,因此a<<2+a相當於a<<(a+2)。

3樓:

相當於 a<<(2+a) 即 1右移3位 結果就是8

注意運算子優先順序

4樓:嘻嘻哈哈一下子

a<<2 後 a=4?不對吧…

忘了優先順序了,按照你的結果,應該是+的大於<<,相當於1<<3,也就是8了…

5樓:匿名使用者

你要先考慮優先順序,《和+的優先順序,a+2等於3,於是便左移3位就到8了,即:0000 0001左移3為,0000 1000等於8.

6樓:匿名使用者

a<<2 後 a=4

然後 +a

就是a+a=8

為什麼這個Java程式會輸出這個結果

一.除錯了一下a a new b 的執行順序 先載入類,執行父類的靜態變數static int j 7 然後執行子類的靜態變數及 塊static int j 9 static 這裡會先執行new a 然後執行t 可以分1 2 兩步來看 1 出現new a 了就會載入非靜態變數int k 6,然後呼叫...

C語言自己編寫函式 為什麼輸出結果總是

printf lf n c 這句話有問題 c表示的是變數c的地址,應該把這句話改為,printf lf n c 去掉 符號即可 c語言,寫遞迴函式,把輸入的一個整數轉換成二進位制輸出。我編寫的函式執行後的結果總會在後面多了一個1,include stdio.h int mybinary int m ...

這個C 的結果為什麼輸出是33 33,18函式的意思我懂

用兩個版本的gcc看,結果是33.33,10 如果真出現18 我覺得可能是編譯器錯誤 33.33,10吧 setprecision 4 是控制輸出流顯示浮點數的數字個數為4setw 3 是控制輸出寬度為3,若資料位數不到3,則在左邊補空格來輸出 hex是把整數以16進位制形式輸出,貌似對浮點數不起作...