关于ShortInt的问题

toby 2005-03-07 05:40:53
在C++Builder中的system.hpp定义了一组全局的静态常量,如:
static const Shortint vmtSelfPtr = 0xffffffb4;
其中,ShortInt在sysmac.h中定义:
typedef signed char Shortint; // -128..127

很明显,上面的常量都是用补码表示的,可是为什么不直接用 0xb4,而非要用0xffffffb4呢?

调试一下可以看到,vmtSelfPtr = 0xffffffb4和vmtSelfPtr = 0xb4的结果是一样的,都是“-76”,Borland在定义时为何不用0xb4呢?
...全文
82 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不懂电脑 2005-03-08
  • 打赏
  • 举报
回复
是有差别的
0xffffffb4;//32位的数
0xb4 //8位的数
在不同机器中升级为32位的时候是有差异的。
网事随逢 2005-03-08
  • 打赏
  • 举报
回复
个人觉得这么定义肯定有它的道理,
猜想是不是因为在机器内部进行一些 特殊 运算的时候使用补码不会产生数学上的歧义。

我一直是这样用的,还没有想过这个问题呢,呵呵。
constantine 2005-03-07
  • 打赏
  • 举报
回复
就象很多宏都指向同一个,为了要人清楚易懂
JetKingLau 2005-03-07
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Caption = Now().FormatString("yyyy-mm-dd hh:nn:ss");
}



void __fastcall TForm1::Button1Click(TObject *Sender) { Caption = Now().FormatString("yyyy-mm-dd hh:nn:ss"); }


是一样滴,为什么我们要求用前者而不是用后者呢?!

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧