智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1655|回复: 4
打印 上一主题 下一主题

[软件类] CodeWarrioed C语言语法与标准C不一样

[复制链接]

21

主题

108

帖子

0

精华

高级会员

Rank: 4

积分
732
威望
396
贡献
234
兑换币
235
注册时间
2013-12-4
在线时间
51 小时
跳转到指定楼层
1#
发表于 2014-5-8 19:39:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如果我定义的D[0],D[1]都是unsigned int型,S是double型
那么S=D[1]-D[0];
如果D[1]=0,D[0]=1;
S=65535;
取unsigned int型的补码
但按照标准C应该是double的补码才是。
回复

使用道具 举报

25

主题

1217

帖子

0

精华

知名人物

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
27554

论坛元老奖章活跃会员奖章优秀会员奖章在线王奖章资源大师奖章

QQ
威望
18751
贡献
5861
兑换币
3255
注册时间
2012-6-6
在线时间
1471 小时
2#
发表于 2014-5-8 20:31:48 | 只看该作者
没试过..........
回复 支持 反对

使用道具 举报

10

主题

1956

帖子

0

精华

跨届大侠

Rank: 10Rank: 10Rank: 10

积分
10144

优秀会员奖章活跃会员奖章在线王奖章论坛元老奖章论坛元老奖章

威望
4669
贡献
2699
兑换币
2876
注册时间
2013-10-2
在线时间
1388 小时
3#
发表于 2014-5-8 21:00:52 | 只看该作者
看不懂。
回复 支持 反对

使用道具 举报

2

主题

22

帖子

0

精华

高级会员

Rank: 4

积分
901
威望
507
贡献
246
兑换币
91
注册时间
2010-11-10
在线时间
74 小时
4#
发表于 2014-5-9 08:47:49 | 只看该作者
编译器编译之后的执行过程应该是:
1、计算D[1]-D[0],结果记作Ans;
2、将整形结果Ans强制类型转换并赋值给S

D[1]和D[0]都是无符号整形,那么D[1]-D[0]还是整形运算,所以结果是65535,之后S=65535是将无符号整形强制转换为双精度浮点型,数值没有溢出,所以不会是双精度浮点型的补码。

如果你要你要得到浮点型补码,应该这样写:
S=(double)D[1]-D[0];

或者直接将D[1]定义为浮点型!
回复 支持 反对

使用道具 举报

21

主题

108

帖子

0

精华

高级会员

Rank: 4

积分
732
威望
396
贡献
234
兑换币
235
注册时间
2013-12-4
在线时间
51 小时
5#
 楼主| 发表于 2014-5-15 19:26:33 | 只看该作者
我就是这么试的
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 20:56 , Processed in 0.041908 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表