getchar()和putchar()的原型是:
int getchar(void);
int putchar(int c);
正如其原型所示,getchar()函数是 声明为返回一个整数。但是,您可以将此值赋值给 一个char变量,如通常所做的那样,因为该字符是 包含在低位字节中。(高位字节通常是 零。)
在putchar()的情况下类似,即使它被声明为采取 整数参数通常用一个字符来调用它 参数。实际只输出其参数的低位字节 到屏幕。
我正在研究Console I / O并遇到过这种情况。 高阶和低阶字节是什么意思?
在上述情况下它意味着什么?
答案 0 :(得分:2)
在C中,int
的大小是实现定义的,但通常是2或4个字节。高位字节将是包含值的最大部分的字节。低位字节将是包含值的最小部分的字节。例如,如果您有一个16位int
,并且该值为5,243,那么您将以十六进制形式将其写为0x147B。高位字节是0x14,低位字节是0x7B。 char
只有1个字节,因此它始终包含在最低位字节中。当以十六进制(以从左到右的方式)写入时,低位字节将始终是最右边的2位数,而高位字节将是最左边的2位数(假设它们将所有字节写出,包括领先的0)。
答案 1 :(得分:0)
我认为最好的比喻是查看十进制数字。
虽然事实并非如此,但为了这个类比的目的,我们假装char
代表一个十进制数字,而int
表示四位小数数字。如果您有char
具有某个数值,则可以将char
存储在int
内,方法是将其写为整数的最后一位,并在前面填充三个零。例如,值7
将表示为0007
。在数值上,char
值7
和int
值0007
彼此相同,因为我们用{0}填充了int
。 "低位数字" int
中的7
将是最右边的那个,它具有值int
,以及"高阶字节" char
的其他三个值都是零。
实际上,在大多数系统中,int
表示单个字节(8位),char
由4个字节(32位)表示。您可以将int
的值填充到char
中,使三个高阶字节都保持值0,低阶字节保持int
' s值。 int
的低位字节有点像我们上面类比中的那个位置,而{{1}}的高位字节有点像数十,数百,在上面的比喻中有成千上万的人。