展开全部
输出的结果是:4294967293
分析如下:
变量i是有符号数,i=-3,而负数在内存中是以其补码的形式存放的,-3的补码(int型的占4个字节32位):1,111 1111 1111 1111 1111 1111 1111 1101,其中最高位是符号位(0为正,1为负),而变量ud是无符号位的,那么就不存在符号位了,当将变量i赋值给ud时,这里存在一个自动类型转换,这是编译系统自动进行的,会先将变量i转换为无符号数,即符号位不起作用了,而是把它当作数值位了,然后赋值给ud。那么,输出ud的十进制值就是将上面的二进制计算出来就可以了,其实就是十进制的4294967293。
%u是以十进制输出无符号的int类型格式符。
分析如下:
变量i是有符号数,i=-3,而负数在内存中是以其补码的形式存放的,-3的补码(int型的占4个字节32位):1,111 1111 1111 1111 1111 1111 1111 1101,其中最高位是符号位(0为正,1为负),而变量ud是无符号位的,那么就不存在符号位了,当将变量i赋值给ud时,这里存在一个自动类型转换,这是编译系统自动进行的,会先将变量i转换为无符号数,即符号位不起作用了,而是把它当作数值位了,然后赋值给ud。那么,输出ud的十进制值就是将上面的二进制计算出来就可以了,其实就是十进制的4294967293。
%u是以十进制输出无符号的int类型格式符。
展开全部
假设int为32位,-3 对应的是 0xfffffffd, 对应的unsigned int 就是4294967293
关于-3 = 0xfffffffd,可以去查看补码
https://zh.wikipedia.org/zh/%E4%BA%8C%E8%A3%9C%E6%95%B8
关于-3 = 0xfffffffd,可以去查看补码
https://zh.wikipedia.org/zh/%E4%BA%8C%E8%A3%9C%E6%95%B8
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这结果明显就是乱码了啊,你好好了解一下这两种数据类型吧,不是同一种类型好吗
追问
涉不涉及到反码补码之类的
追答
你如果要深入学习,你必须得了解这些类型的概念,否者就算告诉你了,你也很难继续学习的,授之于渔了,已经告诉你怎么做了啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询