简单的c语言问题,其实,很多刚入门的朋友弄不明白

#include 
main() 
{ int m=7,n=4; 
float a=38.4,b=6.4,x;
 x=m/2+n*a/b+1/2; 
printf("%f/n",x); 
}
为什么是27.000000,我求出来是28.000000,为什么1/2不参加运算,求指导。
回答:
因为程序的m/2中,m与2都是整形,它的结果也是整形
所以当m=7时,m/2=7/2=3而不是3.5
而1/2同样,结果为0
所以正确的写法
  x = m / 2.0 + n * a / b + 1.0 / 2;

问题:若int x=1,y=0; 则表达式 ( y == x>>1 ) ? ++ x/++ y : ++ x 的运算结果是什么?
回答:
先计算 x>>1,因为x=1,所以结果为0;
再计算y==(x>>1),结果相等
所以表达式值执行 ++x/++y;
因为是先++,所以先计算x=x+1=2 y=y+1=1
再计算2/1结果表达式的值为2
最终
x=2 y=1 表达式值为2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值