我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:大家发高手网 > 短整数 >

关于C语言无符号整数的一个问题。

归档日期:05-31       文本归类:短整数      文章编辑:爱尚语录

  书上解释说使用%u格式控制字符串输出正整数时该数不发生变化,输出负整数时该负整数将被转换为无符号整数输出。

  后一句话具体什么意思?没太懂…麻烦高人指点。。。展开我来答

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部首先这里是无符号和有符号之间的区别, 在这里我们将他们实现为二进制后, 楼主你会更好的理解他们之间的区别, 而且这部分的题目是面试题常考的

  书上解释说使用%u格式控制字符串输出正整数时该数不发生变化,输出负整数时该负整数将被转换为无符号整数输出。

  现在这句话的意思已经很明显, 就在计算机中一个数字最终是以二进制存在, 不会改变

  楼主, 具体方面的原理可以看深入理解计算机系统中第2章方面的知识, 不需要前缀知识, 直接看就行了。

  要知道计算机里是用补码来表示整型。以8位为例子,二进制表示范围为0~255,即00000000~11111111,00000000~11111111分别代表无符号整型(unsigned)0~255,而有符号不同,10000000~11111111表示-128~-1, 00000000~01111111表示0~127,这么表示的原因是为了计算方便,具体可以上网搜补码。有符号数转无符号数即转变表示方式,值不变,例,11111111在无符号里表示255,在有符号里表示-1。可以类推到32位(int)

  就是说,printf(%un,1);的输出结果就是1,而printf(%un,-1);则输出4294967295,即把-1的补码0xFFFFFFFF当一个正数来输出了。

本文链接:http://buffaloruse.net/duanzhengshu/498.html