連續列印「i ,

2021-12-29 19:56:45 字數 792 閱讀 7491

首先,來一段這樣的程式:

按照c語言學過的後置加加,前置減減的知識來說大多數人的思路是這樣:

後置加加,先進行取值,然後自加1。所以i++列印的值為0。 後 i 值目前為1。

前置減減,先自減後取值,所以- -i列印出來的值為0。後 i 值為0;

後置減減,先取值後自減,所以i++列印出來的值為0。後i 值為1。

但是實際的結果值為:

意不意外,驚不驚喜?在看到答案之餘,是不是懷疑自己學錯了?其實思考的是對的,只是編譯器(我的是vs2013版的)給你開了乙個玩笑。當時我也愣了,還以為自己的壞了,哈哈。後來進入到彙編指令之後,就明白了。接下來,一起進入反彙編指令之旅。

push是出棧指令,首先找到它出戰的元素,找到它的出處。然後開始解讀反彙編指令了。

順序是黑藍紅,三色的最終指向就是最後的列印結果。至於i- -列印出1 的原因就是說,因為列印的是i的值,在整個過程中i通過暫存器進行了兩次++,一次- -。所以最終的列印結果是1。旅程結束了,這就告訴我們,多敲敲**,哈哈。

js連續列印出錯

今天用js連續列印多個div層,結果發現列印到第二個時報錯 不可用 研究後發現在不同iframe中列印就不會有問題。function 為了支援連續列印多層做了一點小修改 var ele this var idprefix printarea 改成了var ele this var idprefix ...

連續列印「i , i,i 」出現的結果

首先,來一段這樣的程式 按照c語言學過的後置加加,前置減減的知識來說大多數人的思路是這樣 後置加加,先進行取值,然後自加1。所以i 列印的值為0。後 i 值目前為1。前置減減,先自減後取值,所以 i列印出來的值 為0。後 i 值為0 後置減減,先取值後自減,所以i 列印出來的值為0。後i 值為1。但...

Java 多執行緒連續列印ABC

1.利用synchronized 思路 列印a時,必須先拿到 b,c鎖,列印完了之後,釋放a鎖,然後列印b的執行緒拿到a鎖後就可以列印b,依次迴圈。public class mythreadprinter implements runnable try catch interruptedexcept...