C语言题目 若已定义x和y为double类型,则表达式“x=1,y=x+3/2"的值是:

作者&投稿:笪腾 (若有异议请与网页底部的电邮联系)
c语言。若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是~

c语言。若已定义x和y为double类型,则表达式“x=1,y=x+3/2”的值是2.0。
解释:这是一个逗号表达式,它的值应为表达式式y=3/2的值,而前一个表达式已给x赋值1,在没有进行类型转换的情况下,3/2的值为1,所以x+3/2的值应为2.0。
逗号表达式的要领:
1、从左到右逐个计算;
2、逗号表达式作为一个整体,它的值为最后一个表达式的值;
3、 逗号表达式的优先级别在所有运算符中最低。
注意:
1、逗号表达式只有一个返回值。
2、逗号表达式的最大作用是:用在语法上只能一个表达式,但是逻辑上需要多个表达式的地方。


扩展资料:
C语言double类型数的两个特征:
1、double数据类型表达的也是一个近似的数,不是准确的,小数点后的n位有误差,浮点数的位数越大,误差越大,到18位的时候,误差了1,基本上不能用了。
2、用“==”可以比较两个double数值是否相等。
float浮点型的精度最多只有8位,并且不能用==判断两个浮点数是否相等,在实际开发中,弃用float,只使用double型就可以了。

若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是2.0。
因为3和2都是整数类型的,所以认为3/2的结果也是整数类型的,舍弃后面的尾数,仅留下整数位的1。而为x和y为double类型,是双精度浮点型。双精度浮点型和整数类型做加法,精度取双精度浮点型,所以,y=x+3/2=1.0+1=2.0。

双精度型性质:
双精度型占8 个字节(64位)内存空间,其数值范围为-1.79769313486232E308 到1.79769313486232E308。
双精度浮点型类型数值可转换到其他类型的整数或浮点数,反之亦然。双精度浮点型常量的最后一个字符可加上“d”或“D”。其存储格式与浮点型类似,最高位为符号位,次高11位为指数位,其次52位为尾数。

表达式的计算值为: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= " << y << endl;//输出y的结果

 return 0;

}

程序运行结果如下:



扩展资料:

本题目涉及到了类型的转换问题:

强制类型转换是通过类型转换运算来实现的。其一般形式为: (类型说明符) (表达式) 其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符)(表达式)其功能是把表达式的运算结果强制转换成类型说明符所表示的类型。

自动转换是在源类型和目标类型兼容以及目标类型广于源类型时发生一个类型到另一类的转换。例如: (float) a 把a转换为浮点型,(int)(x+y) 把x+y的结果转换为整型。在使用强制转换时应注意以下问题:

1.类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。

2.无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。

赋值中的类型转换

当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:

(1) 浮点型与整型

● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。

(2) 单、双精度浮点型

● 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为double型数据参加运算,然后直接赋值。double型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。

(3) char型与int型

● int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。

● char型数值赋给int型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。对于使用者来讲,如果原来char型数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。

(4) int型与long型

● long型数据赋给int型变量时,将低16位值送给int型变量,而将高16 位截断舍弃。(这里假定int型占两个字节)。 将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。

(5) 无符号整数

● 将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned int→int、unsigned long→long,unsigned short→short) ,原值照赋,内部的存储方式不变,但外部值却可能改变。

● 将一个非unsigned整型数据赋给长度相同的unsigned型变量时, 内部存储形式不变,但外部表示时总是无符号的。

参考资料来源:百度百科-C语言类型强制转换



格式化输出若为%f(即printf(“%f”,y);),那么输出就为2.000000;格式化输出若为%d,输出就为0;若格式化输出为%3.1f,那么输出才为2.0;上面题目太不严密,希望你能真正搞懂哦!

这个是两个类型的问题:
double、float都是浮点型。double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大。选D。

你定义了X,Y为长整形,输出就也是长整形所以答案是C

应该选C 2.0.


霍城县15541388033: C语言:若已定义X和Y为double型,则表达式:x=1,y=x+3/2的值是2.0 -
永婵托平: 因为3和2都是int型的,所以认为3/2的结果也是int的,舍弃后面的尾数,仅留下整数位的1.然后加上double型的x,复制给double型的y所以是2.0

霍城县15541388033: 2.若已定义x和y为double型,则表达式:x=1,y=x+3/2的值是( ) A、 B、 C、 D、 A、1 B、2 C、2.0 D、2.5 4.若有两条语句 static char x[] ="abcde"; static ... -
永婵托平:[答案] 2.double 5.200 7.** 8.2,1 9.9 9 10.7,6 11./ 12.A 13.B 14.A

霍城县15541388033: C语言程序选择题,C语言高手进来下吧, 1、 若定义x和y为double类型,则表达式:x=2,y=x+5/2的值( ) -
永婵托平:[选项] A. 4 B. 4.5 C. 4.0 D. 3.0 2、为表示关系x

霍城县15541388033: 一道c语言题.假定x和y为double型,则表达式x=2,y=x+3/2的值是多少? -
永婵托平: 逗号表达式,假设表达式的值要赋值给另一个double型变量a:a=(x=2,y=x+3/2); 相当于:x=2; y=x+3/2; a=y; 逗号表达式是顺序执行后最后一个式子的取值 x=2;[x=2],y=x+3/2;[y=2.0+1=3]由于在计算3/2时,参与计算的两个数都是整型数据,则默认进行整型的计算得到的数也是整型的1,舍去了小数部分,a=y;[a=3]所以整个表达式的值为3.0 如果想得到3.5,要改写一下:这几种写法都可以 a=(x=2,y=x+3.0/2); a=(x=2,y=x+3/2.0); a=(x=2,y=x+(double)3/2);

霍城县15541388033: c语言大神进 若已定义x和y都为double型,则表达式x=1,y=x+3/2的值是? 答案 -
永婵托平: (double)2【默认】输出2.0(只带一个0)

霍城县15541388033: c 语言题目 -
永婵托平: 6. 若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是(C).(3分)A、 B、 C、 D、A、1B、2C、2.0D、2.5 7. 以下说法中正确的是(D) (3分)A、 B、 C、 D、A、#define和printf都是C语句B、#define是C语句,而printf不是...

霍城县15541388033: (20)设变量x和y均已正确定义并赋值,以下if语句中,为什么在编译时将产生错误信息的是(C)? -
永婵托平: 估计你是指的是07年4月份的c语言二级考试题目.题目如下: 设变量x 和y 均已正确定义并赋值.下列if 语句中,在编译时将产生错误信息的是 ( ). A)if(x+ +); B)if(x>y&&y! =0); C)if(x>0)x-- D)if(y<0){;}else y+ +; else x+ +;很明显c选项有误,x--后面没有分号“;” 在编译时会出错.

霍城县15541388033: 《C语言程序设计》练习题 -
永婵托平: 一、选择题 1、C语言规定,在一个源程序中,main()函数的位置(C ). A) 必须在最开始 B)必须在最后 C) 可以任意 D) 必须在系统调用的库函数后面 这题你死记就行,你看看这个 任何一个C++程序都必须定义一个main函数,它的返...

霍城县15541388033: 一套c语言题目...请高手帮忙做下.谢了 -
永婵托平: 1.A2.B3.A4.A5.D6.A7.D8.B9.B10.C 这题很难!一般认为y是double型,所以y=3/2应该等于1.5,但实际上c在计算3/2时并不知道结果是赋给一个double型变量,而3和2都是整数型,所以3/2的实际按整除运算结果是1,然后再赋值给y变量的. 假如...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网