课本:C++输出的1字节澄清
所以我知道一个字节有8位,右位移加零位的左侧和右侧弹出关位。 但是它如何使用上面的例子来输出一个字节? 我会一直期待:
putchar(b >> 8)
putchar(b >> 7)
putchar(b >> 6)
etc.
因为我承担的putchar输出弹出位?
课本:C++输出的1字节澄清
所以我知道一个字节有8位,右位移加零位的左侧和右侧弹出关位。 但是它如何使用上面的例子来输出一个字节? 我会一直期待:
putchar(b >> 8)
putchar(b >> 7)
putchar(b >> 6)
etc.
因为我承担的putchar输出弹出位?
putchar打印出与给定整数对应的ascii字符。
putchar(0x41)
将整数0x41转换为unsigned char
(大小为一个字节),并打印出对应于0x41(即“A”)的ascii字符。
这里要实现的关键是,putchar只看低8位,即putchar(0x41)
和putchar(0xffffff41)
也是一样的。
现在让我们看看当你将某些东西传递给上面的函数时会发生什么。
outbyte(0x41424344);
第一它由24位bitshifts B,然后在该值调用的putchar 0x41424344 << 24; //0x00000041
putchar(0x00000041); //A
然后它由16位bitshifts B,然后在该值调用的putchar 0x41424344 << 24; //0x00004142
putchar(0x00004142); //B
等
在这里它是在行动:http://ideone.com/3xeFSx
Ooooh,所以教科书在最后一次putchar调用发生了错误。 – NoName 2014-09-29 19:03:16