-10用16进制输出为何为ffffff6

#include
intmain()
{
shortintx=-10;
//原码-1000000000001010
//反码-1111111111110101
//补码-1111111111110110
//FFF6(我以为的结果)
//结果-fffffff6,好像占用4个字节
printf("%x\n",x);
}
刚开始看C语言,不太明白求解,谢谢诸位
浮云间
浏览 438回答 2
2回答

守着一只汪

语言标准只规定了类型至少几个字节,以及几种类型之间的大小关系。类型具体占多大由编译器决定。李毅的回答是对的。你没用正确的%x修饰符输出,导致其实是按unsignedint输出的。如果你改对了输出的修饰符之后,结果还是不符合预期,则可以用我上面的回答解释。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript