欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2832|回復: 0
收起左側

c語言數據運算超范圍要注意

[復制鏈接]
ID:105323 發表于 2016-2-22 02:04 | 顯示全部樓層 |閱讀模式
注意:計算式,能不寫成一大行的就分開寫,只要保證了精度就可以了!!寫一大行有時候反而影響精度!
例如:unsigned long int X;
  double AD;
AD=AD/50.0;
X=AD*5000.0000/1023.00;
最好先局部計算一下,X=AD*100/1023.00;

1。浮點類型的不能做“模”運算。 例如:float a=1234.56;    a=a%10;  這是錯誤的。只有整形才能做“模”int a=12345;  a=a%10;
2.如果你想做普通的四則運算。那肯定是浮點數的運算。整形的除法不是我們平時的除法,它是舍去了余數,即小數部分。例如:int a=1;   a=a/10;   結果會得到0;因為只有商被保留下來。正確的是: float  a=1;   a=a/10;   得到結果是:0.1
3。四則運算中常量之間做除法是特別注意:要加小數部分,不管它有沒有小數部分;例如:float  a;   a=12/36; 這是錯誤的,這是取商運算,不叫“除法”,只能得到0。正確的應該是:float  a;   a=12.0/36.0;   加上小數點就對了,得到結果 0.3   。不過,賦值運算符右邊只要有一個變量或常量是浮點型就可以了。即:a=12.0/36;   也得到a=0.3;因為C語言能自動想高一級轉換類型。但是注意:int 與浮點“常量”運算并不能把他的范圍擴大除非計算式里有浮點“變量”例如:int a=5,llong int b;  b=a*3+65536;是錯誤的,第二次加法還是會超范圍(int )。平時我們應該養成浮點數加小數點的習慣。同時注意:常量也分數據類型的。 “12”代表是非浮點型(整型int或字符型char)“12.0”則是浮點型(float)
4. 對于不同類型的變量做計算時,要考慮結果是否超過了左面被賦值變量類型的范圍 例如 unsigned int  a,b=7;   a=b+65536;得到的結果不會是65543,因為它已經超出了a的最大值 65536;  又如 a=b-65536;也不會得到負數.  a=b*65536;也超出范圍。
可見:四則運算要注意三點。1。數據類型。2.。精度問題 。 3。計算超范圍問題。 特別是變量與常量的四則運算加倍注意是否超范圍。

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

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