C語言中for迴圈中的語句調換順序之後,得到的這個值是什麼意思?

時間 2022-01-06 04:27:37

1樓:

這和什麼for迴圈中的語句調換順序之後無關,而是題主沒有資料儲存和溢位的概念。

.首先當變數i自加到int型最大值2147483647(0x7FFFFFFF 也就是 2^31-1)後,會向最高位進一,改變符號位,使變數i等於-2147483648(0x80000000),在繼續加直到為變數i為0跳出for迴圈。

.那麼,在這個過程中,迴圈語句sum = sum + i(不是1),看起來作用好像就是:

sum = 1 + 2 + 3 + ... + 2147483647 + (-21474836482) + (-1) + 0 ;

可變數sum和變數i一樣超過int型最大值後會照成資料溢位。如此迴圈,直到最後得到變數sum等於2147483647,居然也是int型最大值,題主可以用數學方法驗證一下。

.至於那個while迴圈,同樣可以這樣解釋:

迴圈語句sum = sum + 1 一共執行(2147483646 + 2147483648)次,那麼當執行到第***次時,變數sum的值由2147483647(0x7FFFFFFF)變為 -2147483648(0x80000000),然後繼續執行剩下的2147483646 ,也等同於sum 加上 2147483646 也就等於-2 。

.參考資料:

整數 (電腦科學)

怎樣運用c語言中的for迴圈程式設計菱形

Big鐵錘愛笨笨 兩個解法,都已實驗過。請看註釋理解 解法1 include int main for int i n 1 i 0 i for int i n 1 i 2 n 1 i 李展發 藏雲 include intmain for i 0 i 9 i puts a i return0 最正確的...

這個是為什麼?(C語言中輔助控制語句continue語句)

豬玀 if不是迴圈啊。for迴圈的語句包括兩個 if和printf,if語句裡的Continue的意思是,當條件為真,執行continue,continue結束本次迴圈,直接開始下一輪迴圈,所以跳過了迴圈裡的第二句printf。當條件為假時,不執行continue,所以會執行第二條語句printf。...

程式語言中for迴圈和while迴圈的深層區別是什麼?

寒風 看了一下,17年還有人答,我也湊個熱鬧,18年來答下根據我的理解,1 while適合用於狀態變化控制,說高大上點就是while適合做狀態機,而for僅僅是為了迴圈而迴圈 2 另外一個區別,for迴圈一般都是這麼用的,for int i xx i3 和一有點類似,通常剛學程式的時候會告訴你應儘量...

請問 C 語言中 和 的用法?

記住 有3個用途 1.乘號 Multiply 2 3 就是6 2.宣告指標 Pointer Statement int a 5 int ptr a 就是宣告變數a是5,把a的地址附到指標ptr上 3.解引用 Dereference ptr 單獨拿出來就是找出 ptr指標指向的值,按照第二點的說法就是...

C語言中 p p 是如何工作的?

劉博 拒絕回答好了 不要在一個語句中多次修改同一變數的值 P大某雙學位期末考試出過請寫出f a a 的值,也是一臉懵逼,不過那門課現在已經消失了 Doraemon 我比較討厭自加 自減運算子和別的別的運算子或者判斷句同時出現,因為這樣根本搞不清參與運算的到底是自加減前的還是自加減後的,可讀性變差。自...