当我们看一些基本的数据类型,例如 char 和 int 时,我们知道 char 只是一个无符号字节(取决于语言),int 只是一个有符号 dword,bool 只是一个只能是1 或 0,等等你区分有符号和无符号数据,以及浮点数据?
为了扩展问题的上下文,在 C 语言中,if 和 while 语句可以将布尔值作为输入,该值通常存储为 char,这消除了对显式布尔类型的需求。
在实践中,两段代码在二进制级别应该是等价的:
int main()
{
int x = 5;
char y = 'c';
printf("%d %c\n", x - 8, y + 1);
return 0;
}
//outputs: -3 d
-
signed dword main()
{
signed dword x = 5;
byte y = 'c';
printf("%d %c\n", x - 8, y + 1);
return 0;
}
//outputs: -3 d