[求解释] C 中数值型类型转换问题

Cathe_chang 2011-03-02 03:27:00
书中提到的数据类型之间的转换顺序为: int --> unsigned -->long --->double
程序如下:
int a=-10;
unsigned b=3; //无符号的int型
unsigned c;
c = a+b; // 有符号 + 无符号 的应该是将两个都转换为 unsigned 然后给出结果

用visual studio 2008和win TC都来编译了下,怎么结果都是-7??
按上面说的 结果应该是个无符号的数值啊?
在线等,求解释,先谢谢了!
...全文
117 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
碎碎念 2011-03-03
  • 打赏
  • 举报
回复
lz用的格式化%d输出吧....用cout看看结果...
飞天御剑流 2011-03-02
  • 打赏
  • 举报
回复
如果楼主觉得用C的printf的手动设定的格式说明符说明不了问题的话,可以用C++的cout输出,就能看见隐式转换后的结果了。
Roy_Smiling 2011-03-02
  • 打赏
  • 举报
回复
用%u呵呵,
Cathe_chang 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 proghua 的回复:]
LZ用的是%d吧
[/Quote]

恩  问题就在这里 多谢 
「已注销」 2011-03-02
  • 打赏
  • 举报
回复
LZ用的是%d吧
「已注销」 2011-03-02
  • 打赏
  • 举报
回复
printf("%u\n", c);
qq120848369 2011-03-02
  • 打赏
  • 举报
回复
楼主是外星编译器.
qq120848369 2011-03-02
  • 打赏
  • 举报
回复
4294967289
请按任意键继续. . .
Cathe_chang 2011-03-02
  • 打赏
  • 举报
回复
这样的写法 -12345u 是正确的吗??

在内存中按无符号的规定方式存放,即把-12345u转换成其补码53191,然后按无符号存储!!

疑惑的是:这里的无符号是指什么?? 仅仅是指数值在内存中存放时最高位是否为符号位,还是说这个数值是否为+-数??

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧