標(biāo)題: C語言變量賦值問題 [打印本頁]

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

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

51hei圖片_20220528085901.png

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

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

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

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

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

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

針對(duì)這個(gè)問題:
學(xué)過編程基礎(chǔ)的人都知道。
你定義一個(gè) char  a;  (-128~ 127)
你讓  a = 300;  
會(huì)報(bào)錯(cuò)么??

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

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


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

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

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




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