首先,我們來考慮以下程序。
1)程序顯示當我們越過'char'範圍時會發生什麼:
這段代碼會打印“ a”直到它變成226嗎?答案是不确定的循環,因為這裡的“ a”被聲明為字符,其有效範圍是-128到 127。當“ a”通過a 變為128時,超出範圍,結果,從範圍的負數開始的第一個數字(即-128)被分配給a。因此,滿足條件“ a <= 225”,并且控制保留在循環内。
2)程序顯示當我們越過'bool'範圍時會發生什麼:
該代碼将無限期打印“ 1”,因為此處的“ a”被聲明為“ bool”,有效範圍是0到1。對于布爾變量,除0以外的任何其他都是1(或true)。當“ a”試圖變為2(通過a )時,會将1分配給“ a”。滿足條件a <= 5,并且控制保留在循環中。
3)程序顯示當我們跨過'short'的範圍時會發生什麼:
注意short是short int的簡稱。它們是同義詞。short,short int,signed short和signed short int都是相同的數據類型。
這段代碼會打印'a'直到變成32770嗎?答案是不确定的循環,因為這裡的“ a”被聲明為short,其有效範圍是-32768至 32767。當“ a”試圖通過a 變為32768時,超出範圍,結果是該範圍負數的第一個數字(即-32768)被分配給a。因此,條件“ a <32770”得到滿足,控制仍在循環内。
4)程序顯示當我們跨過'unsigned short'範圍時會發生什麼:
這段代碼會打印“ a”直到變成65536嗎?答案是不确定的循環,因為這裡的“ a”被聲明為short,其有效範圍是0到 65535。當“ a”試圖通過a 變為65536時,超出範圍,結果是範圍中的第一個數字(即0)分配給了a。因此,條件“ a <65536”得到滿足,控制仍在循環内。
說明-
我們知道計算機使用2的補碼表示數據。例如,如果我們有1個字節(我們可以使用char并使用%d作為格式說明符以十進制形式查看它),則可以表示-128到127。如果我們将1加上127,我們将得到-128。那是因為127是二進制格式的01111111。如果将1添加到01111111中,我們将得到10000000。10000000是2的補碼形式的-128。
如果我們使用無符号整數,也會發生同樣的情況。255是11111111,當我們将1加到11111111時,我們将得到100000000。但是我們隻使用前8位,所以它是0。因此,在255中加1後得到0。
另外如果你想更好地提升你的編程能力,學好C語言C 編程!彎道超車,快人一步!筆者這裡或許可以幫到你~
編程學習書籍分享:
編程學習視頻分享:
分享(源碼、項目實戰視頻、項目筆記,基礎入門教程)
歡迎轉行和學習編程的夥伴,利用更多的資料學習成長比自己琢磨更快哦!
C語言C 編程學習交流圈子,點擊下方【了解更多】獲取更多學習資料幫助你學習成長哦~
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!