C语言中,-0x5B这种表达方式对吗?也就是说16进制的整型常量有负数吗?请解释

我在VC6.0中,给变量赋值-0x1,用%d输出的值为-1,这没有什么问题。可是如果我给变量赋值-1,用%#x输出时,却得到了0xFFFFFFFF,符号没有了,奇怪!... 我在VC6.0中,给变量赋值-0x1,用%d输出的值为-1,这没有什么问题。可是如果我给变量赋值-1,用%#x输出时,却得到了0xFFFFFFFF,符号没有了,奇怪! 展开
 我来答
zzyyxxaabbcc
2010-10-25 · TA获得超过3641个赞
知道大有可为答主
回答量:3542
采纳率:50%
帮助的人:3188万
展开全部
没有任何问题。

0x5b只是16进制方式表示的整数,我们都知道整数是可以是正数或负数的,所以这样表示没有问题。

不论是二进制、八进制、十进制、十六进制甚至是三十二进制还是多少多少进制,都只是一种数值的表示方法而已,它们归根结底表示的都是整数,理解了这一点就好了。
----------------------
对补充信息的回答:
我说过,这些只是不同进制对整数的表示方法。八进制、十六进制同样可以表示负数。比如你举的例子,-1这个值,十六进制表示为0xFFFFFFFF。这里面第一位数(就是0x后面的第一个F),它的二进制值是1111,这4个1的第一位1就是符号位,为0表示整个数为正值,为1表示整个数为复制。

也就是说,0x8-0xf开头的十六进制数就是负数。

八进制类似。

再说一句,计算机程序中,我们平时的正负号(+和-)是为了描述十进制数使用的,其他进制有自己的正负值表示方法,并不使用正负号。
匿名用户
2010-10-21
展开全部
近来自学C语言 今天在进行十进制转换为八进制和十六进制时也发现了这个问题 一个负的十进制求补后的符号位也转化八进制或十六进制数里面 也在疑惑C语言中 是不是不能输出带符号的八进制和十六进制数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
angeracb
2010-10-23
知道答主
回答量:5
采纳率:0%
帮助的人:0
展开全部
八进制和十六进制的都没有!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式