C语言问题,求值。

来源:百度知道 编辑:UC知道 时间:2024/05/27 18:55:12
若定义x,y为double型,则表达式x=1,y=x+3/2的值是多少?
(答案是2.0)
帮我解释下,我刚学C。。

先给X赋值(X=1),再做3/2=1(3跟2都是整型的,所以得出来的值也为整型).所以y=x+1,因为x,y都是double型.所以是2.0而不是2..最后,表达式是逗号表达式,逗号表达式的值是逗号右侧表达式的值,所以逗号表达式的值就是y=x+3/2的值,也就是赋值后y的值.

表达式x=1,y=x+3/2

C语言中,二目运算符的运算对象,若是同一类型的,则结果也是该数据类型,并且C里面没有四舍五入哦,只取不大于结果的最大整数,所以这里的3/2=1,x+3/2=2,但由于Y是double类型的,所以将强制转换int类型的2 为double类型的2.0

这个还涉及到运算的优先级问题.在c语言中“/”的优先级高于“+”,所以先做“/”运算,既对3除以2的值取整数,结果是1;再做“+”运算:1+1=2,由于定义为double型,所以2后面加”.0”。就这么简单!

x=1。3/2=1.5但定义为double型所以=1。
y=1+1,所以=2,但为doubie型=2.0

3/2=1,两个整型(int)数相除结果为整数,舍去小数部分;整型(int)与double相加为double数,y=1.0+3/2=1.0+1.0

因为3/2在C语言中是等于1的
y=x+1 x=1 所以y=2