两个程序为什么会输出不一样?

[复制链接]
查看11 | 回复2 | 2012-9-23 10:04:51 | 显示全部楼层 |阅读模式
x+a%3*(int)(x+y)%2/4=2.5在前面程序中,c=2,整型输出"%d"为2,在后面的程序中,要求整型输出,后面是浮点数,输出类型不匹配,输出是0。如果用printf("%d",int(x+a%3*(int)(x+y)%2/4));表示,输出为2。...
回复

使用道具 举报

千问 | 2012-9-23 10:04:51 | 显示全部楼层
前一个代码输出2是因为把一个浮点数赋给一个整型变量时自动只取整数部分,表达式x+a%3*(int)(x+y)%2/4的结果是2.5,赋给c后c=2,所以输出2正确。后一个代码输出0确实是因为输出目标是浮点数而控制符是%d,由于类型不配造成的,但并非这种类型不配就一定输出0。你可以把表达式变成x+a%3*(int)(x+y)%2/4+0.1试试看输出是什么...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行