當前位置:首頁 » 編程語言 » C語言整數除存在什麼危險
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

C語言整數除存在什麼危險

發布時間: 2023-01-29 07:23:20

c語言中整數相除的風險,應如何避免

#include<stdio.h>
#include<string.h>
voidmain()
{
inta,b,c;////a/b
scanf("%d%d",&a,&b);
if(b==0)
printf("分母為0 ")
else
{
///你的代碼
}
}

Ⅱ c語言中,兩個整型數據相除,結果用浮點型變數儲存,為什麼輸出的結

C語言中,兩個整數相除,結果是也是整數,如果被除數不是除數的整數倍,那麼結果會直接舍棄小數,只保留整數部分,並且不會進行四捨五入,是直接舍掉小數,注意。
用你舉的例子:409/5,它的結果是81,不是81.8,如果要讓結果保留小數部分,那麼可以考慮給被除數或除數寫成帶小數的形式,比如寫成:409.0/5或409/5.0或者409.0/5.0

Ⅲ C語言中,當兩個整型常量不能整除時,會發生什麼

只保留其整數部分,小數部分略去。例如8/5,結果為1

Ⅳ c語言中整數小數乘除有何規定

在C語言中無論整型數還是浮點數,都可以進行乘法和除法操作。需要注意的是類型轉換。比如:

printf("%f",3/2);

輸出的結果是0.000000。這並不是一個預期的運算結果。因為3、2這樣的常量在C語言中默認是整型常量。3/2的結果是1。但是對於整數1來說,它的機器碼

而浮點數的編碼一般使用的IEEE754編碼,上面的機器碼用IEEE754編碼表示,即為0。正確的寫法應該是:

printf("%f",(float)3/2);

Ⅳ 如何捕捉在C語言中的整數除零例外

C語言並沒有try catch 這個是C++的
所以對於C語言 無法捕捉 只能在程序中避免
如果除數有可能為0,那麼在做除法或者模除%時,判斷一下除數
如果是0,則報錯

Ⅵ 關於C語言整數除法

#include
"stdio.h"
#include
"math.h"
void
main(void)
{
int
a,b,c,d,e,g;
float
f;
printf("int
a,b");
scanf("%d
%d",&a,&b);
c=a+b;
d=a-b;
e=a*b;
f=a/(float)b
;
g=a%b;
printf("c=%d\n
d=%d\n
e=%d\n
f=%f\n
g=%d\n",c,d,e,f,g);
}
整數除整數得到的一定是整數,這個和c語言中的自動類型轉換有關,按照我上面寫的,把b強制轉換成浮點型,這樣得到的結果就是浮點型,還有輸出浮點型數時用
%f

Ⅶ c語言中整數小數乘除有何規定

其實,整數沒有除法,只有取商(/),取余(%),所以,也沒有什麼舍入
2/3=0
3.2/2=1.6(2也是浮點數,因為不同數據類型的數是不能參與運算的)
1.50000*6=9.0(同理,6也是浮點數)

Ⅷ C語言中一個整數除以另一個整數結果為什麼只取整

因為int 型本身沒小數部分,int和int型的數據操作,得到的結果肯定是整數型的,所以小數部分直接去掉了,就算用%f去輸出,也不會是正確的結果。

例如:

inta=5,b=3;

floatc;

c=a/b;//輸出結果為1.0

c是float型的,按常理c應該等於1.667,但是由於被除數(即變數a)的數據類型為int型,所以在執行完a/b後,運算結果會轉換為int型(即捨去小數),故a/b = 1,之後再將取整後的數據(即整數1)轉換為float類型(即1.0)賦值給變數c,所以最後c=1.0

(8)C語言整數除存在什麼危險擴展閱讀:

C語言有以下幾種取整方法:

1、直接賦值給整數變數。如:

int i = 2.5; 或 i = (int) 2.5;

這種方法採用的是捨去小數部分

2、C/C++中的整數除法運算符「/」本身就有取整功能(int / int),但是整數除法對負數的取整結果和使用的C編譯器有關。

3、使用floor函數。

floor(x)返回的是小於或等於x的最大整數。如:

floor(2.5) = 2

floor(-2.5) = -3

4、使用ceil函數。

ceil(x)返回的是大於x的最小整數。如:

ceil(2.5) = 3

ceil(-2.5) = -2

floor()是向負無窮大舍入,floor(-2.5) = -3;ceil()是向正無窮大舍入,ceil(-2.5) = -2。

Ⅸ C語言里「/」在表示兩個數相除時 「向下取整」缺陷解決方案

1. 向上取整問題:如果整除 X/M=N,則 X=N*M + d,其中余數 d 的范圍是 [0,M-1]考慮數字 Y = X+(M-1) = (N*M+d) + (M-1) = (N+1)*M + (d-1),很容易發現,當 d>1 時,整除 Y/M=N+1,就是說在 X+(M-1) 實現了向上取整;當d=0時,整除Y/M=N,結果是准確的值。2. 數據類型轉換問題:數字後面添加 .f 表示這是一個浮點數,浮點數的運算符 / 是普通的除法,不是整除,得到的結果仍然是浮點數,轉換成整數的時候直接把小數點後面的捨去了,不能實現向上取整。3. 向下取整不能說是C的缺陷。否則,反過來,難道默認向上取整就不是缺陷?

Ⅹ C語言整數除的危險性

整數相除會降低精度,會丟失小數部分。

可以這么作:

5.0/2

或者在整數相除之前先做強制類型轉換:

(float)5/2