unsigned int的 注意事项

来源:互联网 发布:php输出超链接 编辑:程序博客网 时间:2024/05/22 10:37

c语言无符号整数怎么定义

整型变量的分类:基本整型:int 短整型:short int 长整型:long int对以上三类加上修饰符unsigned以指定是“无符号数”。如果加上修饰符singed,则指定的是“有符号数”,如果既不指定为signed也不指定是unsigned,则隐含为有符号(signed)。

无符号整数的陷阱

请问以下代码的输出?
unsigned int a=1,int b=-2;
int c=-2;
cout<<b<<endl;
if(a+c>0)
cout<<a+b<<endl;
运行结果:
4294967294
4294967295
Press any key to continue
首先,程序的第一行,变量b和a一样,都是无符号整型,这是一个陷阱。
其次,在32位系统中,int的范围是-2147483648~+2147483647,而unsignedint的范围是0~4294967295。负数在无符号整型中用补码表示,所以b是4294967294。
第三,int默认为signed int,它与unsigned int运算时,结果被转换为unsignedint,所以a是4294967295。

——————————————-—————————————————————————————————
情况是这样的:
军航问我了关于这段代码的问题。
其结果输出为0.于是就有了以上的讨论。
#include&ltstadio.h&rt
int main()
{
unsigned int x=7;
printf("%d\n",-2
return 0;
}
___________________________________________________
今天决定看知乎决定自己开发一个博客,专门放自己的技术博客。用新浪是在太捉急。
还得学习AJAX。
至于新浪上的文章,决定使用网络爬虫将这些文章抓下来。
这有得深入学习MFC、
好了,加油吧, 程序员


0 0
原创粉丝点击