C语言 这个怎么算出来的

[复制链接]
查看11 | 回复5 | 2012-9-25 16:28:16 | 显示全部楼层 |阅读模式
十六进制0x10001等于十进制的65537,所以以十进制输出以后就是65537而十进制的-200就是以十进制输出的,所以是-200.那个 "%" 后面的8和10是一个指定输出位置的,在前面空出8或者10个空格.后面的ld是长整形,不过现在直接用%d就行了.还不懂的,可以所搜一下 C语言格式化输出 就有详细的解释....
回复

使用道具 举报

千问 | 2012-9-25 16:28:16 | 显示全部楼层
0x表示16进制,printf中的控制符%8ld,其中8表示现时位数,%ld表示以长整形整数(也就是十进制)的形式打印。65537就是0x10001的十进制的值。集体算法是:1*16^4+0*16^3+0*16^2+0*16^1+1*16^0 = 65537。(*表示乘,16^2表示16的2次方),为什么是16而不是别的呢,因为16是权值,这样说的话你还是不...
回复

使用道具 举报

千问 | 2012-9-25 16:28:16 | 显示全部楼层
ox10001是十六进制,你在输出的时候强制转换成10进制了,所以你进制转换一下就好了,你可以先转换成2进制再转十进制,二进制也就是10000000000000001,转成十进制就是2的十六次方加一,所以是65537...
回复

使用道具 举报

千问 | 2012-9-25 16:28:16 | 显示全部楼层
换算呗,16进制转到10进制,ox10001换算过程就是:最高位的那个1乘以16的4次方,结果为65536;最低位的那个1乘以16的0次方,结果为1;两个加起来,65536+1=65537....
回复

使用道具 举报

千问 | 2012-9-25 16:28:16 | 显示全部楼层
ox10001是十六进制的,输出的时候是按十进制输出的,十六进制的10001就是十进制的65537. printf("%8Id,%10Id",x,y);%ld是长整型输出,是按十进制的。%o才是十六进制的,才能输出10001...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行