C语言 若有定义:float x=1.*y=&x.则执行完语句*y=x+3/2后,x的
答案:2 悬赏:0
解决时间 2021-01-07 02:01
- 提问者网友:骨子里的高雅
- 2021-01-06 15:45
C语言 若有定义:float x=1.*y=&x.则执行完语句*y=x+3/2后,x的
最佳答案
- 二级知识专家网友:西岸风
- 2021-01-06 16:06
还是1.0追问不对,不是正确答案追答哦。。不好意思看错了。是2.0追问求详细答案追答x是一个float类型的变量,即为浮点型变量,对于浮点变量,他的赋值方式有多种,就以你的问题为例,x=1. x=1.0 x=.1e1(1前面有个点) x=1e1(c语言认为这种形式为浮点形式) 这些方式都是被允许的
*y是一个指向x地址的指针, 地址就是内存的编号, 使用指针的时候*y+1就相当于是x+1,
因此 *y=x+3/2就等于x=x+3/2
3/2表示3除2,并且只取整数部分,3除2在数学书应该等于1.5, 但是在C中,新的标准里规定
3/2去零结尾 于是等于1,(在C中对于负数的除法运算也是去零结尾)
另外注意的是,3/2得到的是一个整型数(3/2的结果为1),而x是一个浮点数,因此这里在计算的时候会发生一个类型的转化,整型数就变为了浮点数,因此3/2等于1后,1变为1.0(c中认为1是整型数 1.0为浮点数),再更x相加,最后计算结果在赋值给x(刚才说了*y=x+3/2就等于x=x+3/2 )追问专业的牛逼
*y是一个指向x地址的指针, 地址就是内存的编号, 使用指针的时候*y+1就相当于是x+1,
因此 *y=x+3/2就等于x=x+3/2
3/2表示3除2,并且只取整数部分,3除2在数学书应该等于1.5, 但是在C中,新的标准里规定
3/2去零结尾 于是等于1,(在C中对于负数的除法运算也是去零结尾)
另外注意的是,3/2得到的是一个整型数(3/2的结果为1),而x是一个浮点数,因此这里在计算的时候会发生一个类型的转化,整型数就变为了浮点数,因此3/2等于1后,1变为1.0(c中认为1是整型数 1.0为浮点数),再更x相加,最后计算结果在赋值给x(刚才说了*y=x+3/2就等于x=x+3/2 )追问专业的牛逼
全部回答
- 1楼网友:神也偏爱
- 2021-01-06 16:29
是2 ,因为 y是指向x的地址 也就是说改变了y指向地址的值,也就是x的值追问求在具体一点
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯