刚开始学习C,我有点困惑。
我有一些问题:
signed char x = 56;
// In the RAM, I will see 00111000 yes/no?
signed char z = -56;
// In the RAM, I will see 11001000 yes/no?
unsigned char y = 200;
// In the RAM, I will see 11001000 yes/no?
if (z<0){
printf("0 is bigger then z ");
}
编译后,汇编指令如何知道z是-56而不是200?(有特殊的ASM指令用于带符号和无符号?)。>
正如我在问题1中提到的,z和y的值为11001000,没有任何迹象表明它是带符号的还是无符号的。
很抱歉,如果我找不到正确的方式问我的问题,希望您理解我谢谢
刚刚开始学习C,我有点困惑。我有一些问题:如果我有以下代码:signed char x = 56; //在RAM中,我会看到00111000是/否?带符号的字符z = -56; ...
编译器将根据它是无符号还是有符号类型生成不同的指令。这就是告诉处理器处理它的方法。是的,有签名和未签名的单独说明。对于Intel处理器,根据宽度(char,short,int)也有单独的说明]
数字以二进制存储。负数通常以二进制补码形式存储,但是C语言允许使用不同的表示形式。所以这个: