新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > c語言數據運算超范圍要注意

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

        作者: 時間:2012-08-31 來源:網絡 收藏

        注意:計算式,能不寫成一大行的就分開寫,只要保證了精度就可以了!!寫一大行有時候反而影響精度!

        例如: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.0+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;也超出范圍。a=b/65536.0;也不會得到小數。對于多次計算更要特別注意,每一部分是否有可能超出范圍,對超出范圍的做相應處理。例如:unsinged int a,b=123; a=b*5000.0/1000000.0; 這樣得到的結果不會是你想要的,因為第一次乘法已經超出了范圍,第二次做除法時要使用的上次結果已經是個錯誤的值了。 可見:四則運算要注意三點。1。數據類型。2.。精度問題 。 3。計算問題。 特別是變量與常量的四則運算加倍注意是否

        萬能遙控器相關文章:萬能遙控器代碼


        c語言相關文章:c語言教程




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 涿州市| 黎川县| 寿宁县| 三河市| 富源县| 精河县| 珠海市| 景洪市| 虎林市| 章丘市| 荔浦县| 思南县| 雅江县| 岑巩县| 闻喜县| 清原| 日土县| 台东县| 江口县| 彭州市| 丽江市| 城市| 礼泉县| 夏津县| 麻江县| 永春县| 二连浩特市| 嘉善县| 枣强县| 重庆市| 兰考县| 环江| 安顺市| 剑阁县| 江城| 上虞市| 越西县| 曲靖市| 岑巩县| 五台县| 铁岭县|