knrt.net
当前位置:首页 >> C语言。若已定义x和y为DouBlE类型,则表达式“x=1,y=x+3/2”的值是 >>

C语言。若已定义x和y为DouBlE类型,则表达式“x=1,y=x+3/2”的值是

表达式的计算值为:2.0 源程序代码以及算法解释如下:#include <iostream>//头文件 using namespace std;//引用命名空间 int main() { double x;//定义double变量x,y double y; x = 1;//将x赋值 y = x + 3 / 2;//求y表达式的值 cout << "x=1,y=x+3/2

3/2是整型运算,结果为整型,结果是1 x+ 3/2=x+1=1+1=2 y的值是2

如果定义为int型(整型)是定义整数的 值就为2 double型(浮点型)是定义实数的 被定义过的y值只能是2.0 doudle型定义的范围大于int型

double是双精度浮点型,不是整型,双精度浮点型数,直观上就是小数 的确应该是2.03/2的值是1 x是double类型 x+3/2自动转型为double类型 所以是小数.

#include<stdio.h>void main(){ double x=1,y; y=x+3/2; printf("%lf\n",y);}看你输出格式了,不要太纠结这些东西,没什么意义,如果你非要坚持的话,我也不多劝.

c.2.0;因为,double是双精度的浮点型,但3/2=1,除非是3.0/2或者(double)3/2都=1.5,所以结果为2.0这种题型要自己上级多实践才能发现其中的奥妙,才能有很深的体会.

答案是C,过程:3/2=1,但是X是double型,所以1与X相加后,隐式转换,向double转换,后面应该取小数,赋给Y.

因为虽然x是1.00000000但是3和2都是整形啊,做除法的时候发生了截断哦,所以3/2不是1.5,而是1.所以y=2.0000000你这么写就对了3.0/2补充:2.0也是对的啊,没错.如果你在输出的时候格式化了输出会是2.0.但是绝对不会是2.5的.

2.double5.200 7.** 8.2,1 9.9 9 10.7,6 11./12.A13.B14.A

(double)2【默认】输出2.0(只带一个0)

相关文档
网站首页 | 网站地图
All rights reserved Powered by www.knrt.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com