Ⅰ 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.0c是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