找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2832|回復: 13
打印 上一主題 下一主題
收起左側

C語言變量賦值問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:709761 發(fā)表于 2022-5-28 09:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
為什么給變量賦值,超過數(shù)據(jù)類型最大值,編譯為什么不報錯

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

51hei圖片_20220528085901.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

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

舉個簡單的例子, 一個 uchar 類型變量,0~255  當你255的時候繼續(xù)+1, 就會歸0,這是正常的,不屬于錯,而判斷是否溢出,就要你通過程序檢測標志位來決定,是用進位,還是做別的處理。
回復

使用道具 舉報

板凳
ID:883242 發(fā)表于 2022-5-28 12:31 | 只看該作者
float表示最大范圍是-3.4e38 ~ 3.4e38,你這才4.5e6,是不是上學的時候沒學過科學計數(shù)法。。
回復

使用道具 舉報

地板
ID:554500 發(fā)表于 2022-5-28 14:54 | 只看該作者
編譯器只管語法對錯
回復

使用道具 舉報

5#
ID:1026496 發(fā)表于 2022-5-28 18:00 | 只看該作者
編譯器不檢查變量的有效范圍哦
回復

使用道具 舉報

6#
ID:709761 發(fā)表于 2022-5-30 10:06 | 只看該作者
Hephaestus 發(fā)表于 2022-5-28 12:31
float表示最大范圍是-3.4e38 ~ 3.4e38,你這才4.5e6,是不是上學的時候沒學過科學計數(shù)法。?

看清小數(shù)點
回復

使用道具 舉報

7#
ID:883242 發(fā)表于 2022-5-30 12:52 | 只看該作者

你回初中學習什么叫科學計數(shù)法去!
回復

使用道具 舉報

8#
ID:1030991 發(fā)表于 2022-5-30 16:37 | 只看該作者
c語言報錯好像只管語法錯誤,別的不管
回復

使用道具 舉報

9#
ID:883242 發(fā)表于 2022-5-30 18:16 | 只看該作者
楊鑫熒 發(fā)表于 2022-5-30 17:09
給變量賦值,超過數(shù)據(jù)類型最大值,屬于:溢出 而溢出, 屬于正常范疇,并不屬于錯誤,所以,編譯器直接用有 ...

你沒學過科學計數(shù)法?根本就沒超過類型最大值!
回復

使用道具 舉報

10#
ID:624769 發(fā)表于 2022-5-30 18:59 | 只看該作者
現(xiàn)在的人,真的很喜歡:  拋開本質,看現(xiàn)象……

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

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

那么,實際試驗的時候,定義的數(shù)字有沒有真的超限,還重要么?
回復

使用道具 舉報

11#
ID:871721 發(fā)表于 2023-10-26 23:26 來自觸屏版 | 只看該作者
Hephaestus 發(fā)表于 2022-5-30 12:52
你回初中學習什么叫科學計數(shù)法去!

他寫的是"4500000.9000000"中間有個小數(shù)點,讀法是四百五十萬點九,至于為什么9后面為什么加那么多的零我不知道
回復

使用道具 舉報

12#
ID:883242 發(fā)表于 2023-10-27 07:55 | 只看該作者
3253087609ydrq 發(fā)表于 2023-10-26 23:26
他寫的是"4500000.9000000"中間有個∈,毒毃是四皟十万点九,至又X裁�9后面為什么加那么多的零 ...


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

使用道具 舉報

13#
ID:195496 發(fā)表于 2023-10-27 08:19 | 只看該作者
編譯器只取有效位數(shù),超出精度范圍的沒有用,會舍棄掉的。
回復

使用道具 舉報

14#
ID:871721 發(fā)表于 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的
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表