標題: C語言變量賦值問題 [打印本頁]

作者: 李冬    時間: 2022-5-28 09:01
標題: C語言變量賦值問題
為什么給變量賦值,超過數(shù)據(jù)類型最大值,編譯為什么不報錯

51hei圖片_20220528085901.png (33.87 KB, 下載次數(shù): 95)

51hei圖片_20220528085901.png

作者: 188610329    時間: 2022-5-28 11:27
給變量賦值,超過數(shù)據(jù)類型最大值,屬于:溢出
而溢出, 屬于正常范疇,并不屬于錯誤,所以,編譯器直接用有效位繼續(xù)編譯,是不會報錯的。

舉個簡單的例子, 一個 uchar 類型變量,0~255  當你255的時候繼續(xù)+1, 就會歸0,這是正常的,不屬于錯,而判斷是否溢出,就要你通過程序檢測標志位來決定,是用進位,還是做別的處理。
作者: Hephaestus    時間: 2022-5-28 12:31
float表示最大范圍是-3.4e38 ~ 3.4e38,你這才4.5e6,是不是上學的時候沒學過科學計數(shù)法。。
作者: 18701931930    時間: 2022-5-28 14:54
編譯器只管語法對錯
作者: yaoyao2022    時間: 2022-5-28 18:00
編譯器不檢查變量的有效范圍哦
作者: 李冬    時間: 2022-5-30 10:06
Hephaestus 發(fā)表于 2022-5-28 12:31
float表示最大范圍是-3.4e38 ~ 3.4e38,你這才4.5e6,是不是上學的時候沒學過科學計數(shù)法。。

看清小數(shù)點
作者: Hephaestus    時間: 2022-5-30 12:52
李冬 發(fā)表于 2022-5-30 10:06
看清小數(shù)點

你回初中學習什么叫科學計數(shù)法去!
作者: taosys    時間: 2022-5-30 16:37
c語言報錯好像只管語法錯誤,別的不管
作者: Hephaestus    時間: 2022-5-30 18:16
楊鑫熒 發(fā)表于 2022-5-30 17:09
給變量賦值,超過數(shù)據(jù)類型最大值,屬于:溢出 而溢出, 屬于正常范疇,并不屬于錯誤,所以,編譯器直接用有 ...

你沒學過科學計數(shù)法?根本就沒超過類型最大值!
作者: 188610329    時間: 2022-5-30 18:59
現(xiàn)在的人,真的很喜歡:  拋開本質(zhì),看現(xiàn)象……

問題的本質(zhì)是什么?
問題的本質(zhì)只有一句話:  為什么給變量賦值,超過數(shù)據(jù)類型最大值,編譯為什么不報錯

針對這個問題:
學過編程基礎的人都知道。
你定義一個 char  a;  (-128~ 127)
你讓  a = 300;  
會報錯么??

那么,實際試驗的時候,定義的數(shù)字有沒有真的超限,還重要么?
作者: 3253087609ydrq    時間: 2023-10-26 23:26
Hephaestus 發(fā)表于 2022-5-30 12:52
你回初中學習什么叫科學計數(shù)法去!

他寫的是"4500000.9000000"中間有個小數(shù)點,讀法是四百五十萬點九,至于為什么9后面為什么加那么多的零我不知道
作者: Hephaestus    時間: 2023-10-27 07:55
3253087609ydrq 發(fā)表于 2023-10-26 23:26
他寫的是"4500000.9000000"中間有個∈,毒毃是四皟十万点九,至又X裁�9后面為什么加那么多的零 ...


float表示最大范圍是-3.4e38 ~ 3.4e38,你這才4.5e6,是不是上學的時候沒學過科學計數(shù)法。?

作者: 大漠落日    時間: 2023-10-27 08:19
編譯器只取有效位數(shù),超出精度范圍的沒有用,會舍棄掉的。
作者: 3253087609ydrq    時間: 2023-11-10 00:01
Hephaestus 發(fā)表于 2023-10-27 07:55
float表示最大范圍是-3.4e38 ~ 3.4e38,你這才4.5e6,是不是上學的時候沒學過科學計數(shù)法啊?

小學只學了a×10(1≤a<10)這種,沒學關于e的




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1