很简单的问题,.给我解释下,..谢谢/

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:41:40
int a=1,b=2

printf 1.0+a/b 的结果是0

printf 1+a/b 的结果是1
为什么啊~?
1.0+a/b 的结果就是0,我也想不通才来问的啊..不信可以自己试啊.... 谁教下....

因为你定义得a b 为整形变量
看下面:
用char表示-128~127 范围的整数
用int表示-32768~32767范围的整数
用unsigned 表示0~65535范围的正整数
用long 表示更大的整数范围-2147483648~2147483647,
用unsigned long 表示更大的正整数范围0~4294967295,
用float表示10-37~10+38 范围的实数
用double 表示10-307~10+308 范围的实数
用long double表示此范围的实数10-4931~10+4932,
如果程序改为
double a=1,b=2
printf 1.0+a/b的结果就不会是0了。
还有就是 你应该把你的程序 完整的写写 这样才好给你解答啊!!

a/b=0
所以 1+a/b会输出1

你要注意,a和b都是整数型的,而1.0是浮点型的。所以1.0+a/b==0

??1.0+a/b是0,不是1.0??没有括号啊,加了括号也还是1啊。。double的加上int的就变成double类型了

问一下楼上的兄弟,我也没搞懂

a/b=0,但是为什么 1.0+a/b=0?

整型浮点型相加,是把一个自动转换为另一种类型再相加,具体转哪个忘了,但不管怎么搞,也是1+0啊,结果怎么变成0的?