unsigned int a = -1; if( a != -1) ???

maijian 2008-07-12 07:27:27
unsigned int a = -1;
if( a != -1) {
assert(0);
}
请问有 a != -1 的时候吗?
我好想遇到过, vc7
...全文
268 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangtang02520 2008-07-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 277894613 的回复:]
没见过
[/Quote]
277894613 2008-07-14
  • 打赏
  • 举报
回复
没见过
ChamPagneZ 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 maijian 的回复:]
你是用什么编译器啊? 我 vc7 和 gcc都有编译过,
而且很难重现
[/Quote]
unsigned int最小范围是0-65535,编译器的支持unsigned int的范围只要不比这个范围小就可以.
很多编译器还是16位的,没啥啊...
waji2000 2008-07-12
  • 打赏
  • 举报
回复
在i386平台.

int 型是4个字节的.
当然是
a=(unsigned int)-1=0xffffffff



数值的转换:char,short => int ==> unsigned => long =>double <= float
maijian 2008-07-12
  • 打赏
  • 举报
回复
你是用什么编译器啊? 我 vc7 和 gcc都有编译过,
而且很难重现
ChamPagneZ 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 maijian 的回复:]
unsigned int a = -1;

a 会变成 4294967295 (0xFFFFFFFF) 这个值的, 不会 0xFFFF啊
[/Quote]
我那个是16位,你是32位,这和编译器有关.
maijian 2008-07-12
  • 打赏
  • 举报
回复
unsigned int a = -1;

a 会变成 4294967295 (0xFFFFFFFF) 这个值的, 不会 0xFFFF啊
K行天下 2008-07-12
  • 打赏
  • 举报
回复
[Quote=引用楼主 maijian 的帖子:]
unsigned int a = -1;
if( a != -1) {
assert(0);
}
请问有 a != -1 的时候吗?
我好想遇到过, vc7
[/Quote]
不会, 类型提升! -1会提升为unsigned int, 所以还是相等的!
ChamPagneZ 2008-07-12
  • 打赏
  • 举报
回复
机器不认识-1
但有0xFFFF(16),无符整数可以取到这个数值
zhangxichao 2008-07-12
  • 打赏
  • 举报
回复
类型升级问题,存在着陷阱!干嘛这么用呢

69,381

社区成员

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

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