VAR
B:BYTE;
begin
B:=0;
SHOWMESSAGE(inttostr(pred(b) )); //-1
B:=255;
SHOWMESSAGE(inttostr(succ(b) )); //256
SHOWMESSAGE(inttostr(high(b))); //255
SHOWMESSAGE(inttostr(low(b))); //0
INC(b);
showmessage(inttostr(b)); //0
b:=b-1;
showmessage(inttostr(b));//255end;
解决方案 »
- 怎么在dbctrlgrid上加序号?
- 走马上任,照例放分~~~之二,大快事(泰坦RP爆发版)
- <<基于Delphi的p2p软件>>是哪位大侠开发的,我有几个地方看不懂
- 怎样实现一个透明Form,并且可以在上面画线(画的线不透明)?
- 最近公司转行,辞职了.四年工作经验了,软硬兼攻,哪位帮忙推荐一份工作
- 有人使用modelmaker吗?我不会在它的类图里画聚合关系
- 控件大小随窗口变化而变化
- ★★★请问这样的SQL语句应该如何写: 两个表结构相同,请问如何将一个表的所有记录添加到另一个表中去?要求高效率,只有50分了
- 如何在Word文档的指定位置插入特定数据(如数据表字段值 )
- 继续“资源文件限制”的问题——确实存在问题!!!
- 学习dll动态调用 高手指教下
- 如何为外部程序的按钮添加监听事件,每次点击提交的时候把输入的信息添加到一个集合里
CodeGear™ Delphi® 2007 for Win32® Version 11.0.2902.10471 可是在delphi 精要里面说的,应该是不同才对,为什么?
问题byte 的最大取值应只能到255 ,而不是256
B:=255;
INC(B);
结果为0,而不是256
Show的時候 inc(EAX);
因為ShowMessage 的時候已經將 8位寄存器中的值移動16位子EAX中了, 再SUCC的時候 int(integer); // 所以沒有越界
也就是因为我是用inttostr ,所以才出现这样的结果,谢谢!
procedure TForm1.Button1Click(Sender: TObject);
var
A,B : Byte;
begin
{$R+}
A := 255;
B := 255;
A := A+1;
B := B+1; ShowMessage(Inttostr(Byte(Succ(B))));
end;另外上面這段代碼會有提示的,加了越界保護
if pred(b)<0 then showmessage('ok'); //ok
上面的运算结果已经是integer类型的了
0045DA0E B301 mov bl,$01
Unit2.pas.35: b:=b-1;
0045DA10 4B dec ebx
Unit2.pas.36: if pred(b)<0 then
0045DA11 0FB6FB movzx edi,bl
0045DA14 4F dec edi
0045DA15 85FF test edi,edi
0045DA17 7D0A jnl $0045da23看不懂汇编代码,这两个数比较是如何比的..............