找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2846|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

c語(yǔ)言數(shù)據(jù)運(yùn)算超范圍要注意

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:105323 發(fā)表于 2016-2-22 02:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
注意:計(jì)算式,能不寫(xiě)成一大行的就分開(kāi)寫(xiě),只要保證了精度就可以了!!寫(xiě)一大行有時(shí)候反而影響精度!
例如:unsigned long int X;
  double AD;
AD=AD/50.0;
X=AD*5000.0000/1023.00;
最好先局部計(jì)算一下,X=AD*100/1023.00;

1。浮點(diǎn)類(lèi)型的不能做“!边\(yùn)算。 例如:float a=1234.56;    a=a%10;  這是錯(cuò)誤的。只有整形才能做“!眎nt a=12345;  a=a%10;
2.如果你想做普通的四則運(yùn)算。那肯定是浮點(diǎn)數(shù)的運(yùn)算。整形的除法不是我們平時(shí)的除法,它是舍去了余數(shù),即小數(shù)部分。例如:int a=1;   a=a/10;   結(jié)果會(huì)得到0;因?yàn)橹挥猩瘫槐A粝聛?lái)。正確的是: float  a=1;   a=a/10;   得到結(jié)果是:0.1
3。四則運(yùn)算中常量之間做除法是特別注意:要加小數(shù)部分,不管它有沒(méi)有小數(shù)部分;例如:float  a;   a=12/36; 這是錯(cuò)誤的,這是取商運(yùn)算,不叫“除法”,只能得到0。正確的應(yīng)該是:float  a;   a=12.0/36.0;   加上小數(shù)點(diǎn)就對(duì)了,得到結(jié)果 0.3   。不過(guò),賦值運(yùn)算符右邊只要有一個(gè)變量或常量是浮點(diǎn)型就可以了。即:a=12.0/36;   也得到a=0.3;因?yàn)镃語(yǔ)言能自動(dòng)想高一級(jí)轉(zhuǎn)換類(lèi)型。但是注意:int 與浮點(diǎn)“常量”運(yùn)算并不能把他的范圍擴(kuò)大除非計(jì)算式里有浮點(diǎn)“變量”例如:int a=5,llong int b;  b=a*3+65536;是錯(cuò)誤的,第二次加法還是會(huì)超范圍(int )。平時(shí)我們應(yīng)該養(yǎng)成浮點(diǎn)數(shù)加小數(shù)點(diǎn)的習(xí)慣。同時(shí)注意:常量也分?jǐn)?shù)據(jù)類(lèi)型的。 “12”代表是非浮點(diǎn)型(整型int或字符型char)“12.0”則是浮點(diǎn)型(float)
4. 對(duì)于不同類(lèi)型的變量做計(jì)算時(shí),要考慮結(jié)果是否超過(guò)了左面被賦值變量類(lèi)型的范圍 例如 unsigned int  a,b=7;   a=b+65536;得到的結(jié)果不會(huì)是65543,因?yàn)樗呀?jīng)超出了a的最大值 65536;  又如 a=b-65536;也不會(huì)得到負(fù)數(shù).  a=b*65536;也超出范圍。
可見(jiàn):四則運(yùn)算要注意三點(diǎn)。1。數(shù)據(jù)類(lèi)型。2.。精度問(wèn)題 。 3。計(jì)算超范圍問(wèn)題。 特別是變量與常量的四則運(yùn)算加倍注意是否超范圍。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表