getchar()和putchar()的原型是:int getchar(void); int putchar(int c);正如其原型所示,getchar()函数被声明为返回一个整数 . 但是,您可以像往常一样将此值赋给char变量,因为该字符包含在低位字节中 . -order字节通常为零 . )在putchar()的情况下,即使它被声明为采用整数参数,您通常也会使用字符参数调用它 . 只有它的参数的低位字节实际输出到屏幕 .
我正在研究Console I / O并遇到了这个问题 . What do you mean by high order and low order bytes?
And What does it mean in the above context?
2 回答
在C中,
int
的大小是实现定义的,但通常是2或4个字节 . 高位字节将是包含值的最大部分的字节 . 低位字节将是包含值的最小部分的字节 . 例如,如果您有一个16位int
,并且值为5,243,则将其以十六进制形式写为0x147B . 高位字节是0x14,低位字节是0x7B .char
只有1个字节,因此它始终包含在最低位字节中 . 当以十六进制(从左到右的方式)写入时,低位字节将始终是最右边的2位数,而高位字节将是最左边的2位数(假设它们将所有字节写出,包括领先的0) .我认为最好的比喻就是看十进制数 .
虽然这不是't literally how things work, for the purposes of this analogy let'假装
char
代表一个十进制数字,而int
代表四个十进制数字 . 如果你有一个带有一些数值的char
,你可以将char
存储在int
中,将其写为整数的最后一位,用三个零填充前面 . 例如,值7
将表示为0007
. 在数字上,char
值7
和int
值0007
彼此相同,因为我们用零填充了int
.int
的"low-order digit"将是最右边的那个,其值为7
,而int
的"high-order bytes"将是其他三个值,它们都是零 .实际上,在大多数系统中,
char
表示单个字节(8位),int
表示四个字节(32位) . 您可以将char
的值填充到int
中,使三个高位字节都保持值0,低位字节保存char
的值 .int
的低位字节有点像我们上面类比中的那个,而int
的高阶字节有点像上面类比中的数十,数百和数千个位置 .