社区
C语言
帖子详情
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
...全文
306
10
打赏
收藏
unsigned int a = -1; if( a != -1) ???
unsigned int a = -1; if( a != -1) { assert(0); } 请问有 a != -1 的时候吗? 我好想遇到过, vc7
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
类型升级问题,存在着陷阱!干嘛这么用呢
C语言中signed
int
与
unsigned
int
还有
unsigned
char a=-1;signed char=-1;char a=-1;打印结果分析
然而对于if()逻辑语句中的a+b中的
int
类型便会转换为
unsigned
int
类型。(1)
unsigned
int
类型比
Int
类型容量大,因为对于32\64位机器最前面一位对于
Int
类型而言均是符号位,而对于
unsigned
int
类型最高位不是符号位是可以存数据的。pr
int
f打印的是%d,是整形,所以
unsigned
int
会转换成
Int
类型,故a+b的值打印出就是3+-6=-3。1、所以对于题中a和b的分析就是一样的,char只存8个bit位,截取的是最后8位补码为:1111 1111。
c语言
unsigned
与signed及其溢出问题
例:
unsigned
int
a = -1;
int
b = -1; pr
int
f("%d %d \n", a, b); // -1 -1 pr
int
f("%u %u", a, b); // 4294967295 4294967295 \u是无符号输出 可以理解为都是正数输出 正常
int
一个 -1 是以补码的形式存储 4字节
int
就是 11111111 11111111 11111111 11111111 在读取的时候 首位是1表示是负数 然后取反码 最后位 +1 就成了 1000.
C++
int
和
unsigned
int
比较谁大呢?
#include<iostream> using namespace std;
int
main(){
int
a = -1;
unsigned
int
b = 100; if(a < b){ cout << "a(-1) < b(100)" << endl; } else{ cout << "a(-1) &g
给
unsigned
int
类型的变量赋值负数会怎么样?
#include<iostream> using namespace std;
int
main() {
unsigned
int
a = -1; cout << a << endl; return 0; } // a=-1,输出为:4294967295 // a=-2,输出为:4294967294 // a=-3,输...
有符号数与无符号数的比较 与 整型提升
C语言和C++中,有很多基本数据类型,如char,inf,float等,与此同时,还有一种特殊的数据类型容易被我们忽略–无符号数,它由
unsigned
修饰,如
unsigned
int
等,当我们忽略了数据有无符号,就会引起一些错误。 我们来看代码一: char a = -1; signed char b = -1;
unsigned
char c = -1; pr
int
f(&quot;a=%d,b=...
C语言
70,040
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章