Keill中 #define 定义long型问题
#define num 0x1ff00...
typedef unsigned long mm;
if(mm>num)
{ ...}
else
{ ... }
用define 定义了num常量, 在if(mm>num) 比较中,用反汇编看num 的值 屏蔽了高位的 1 变成0xff00 这是什么原因.
后来用以下方法勉强解决
#define num 0x1ff00
...
typedef unsigned long mm;
typedef unsigned long k;
k=num;
if(mm>k)
{ ...}
else
{ ... }
以上是哪里出了问题,望高手指教
以上发的帖写错了,在此更正
#define num 0x1ff00
...
typedef unsigned long mm;
if(mm>num)
{ ...}
else
{ ... }
用define 定义了num常量, 在if(mm>num) 比较中,用反汇编看num 的值 变成0xffff ff00(负数) 这是什么原因.
后来用以下方法勉强解决
#define num 0x1ff00
...
typedef unsigned long mm;
typedef unsigned long k;
k=num;
if(mm>k)反汇编看k是0x1ff00
{ ...}
else
{ ... }
以上是哪里出了问题,望高手指教 #define num 0x1ff00ul
typedef好像是定义类型吧,
类型能跟常量比大小吗?没看懂 不要用typedef 同样没看懂,,,你这个是定义了变量么?typedef unsigned long mm;我怎么感觉这个是指定了一个数据类型。。{:4_194:} _奶咖君_ 发表于 2026-1-23 10:39
同样没看懂,,,你这个是定义了变量么?typedef unsigned long mm;我怎么感觉这个是指定了一个数据类型 ...
是定义了一个变量 mm , 然后变量的值和常量比较 神清气爽 发表于 2026-1-23 14:59
是定义了一个变量 mm , 然后变量的值和常量比较
没看到你在那里定义的变量 0.0 ercircle 发表于 2026-1-22 19:32
#define num 0x1ff00ul
你的方法能解决问题,谢谢 神清气爽 发表于 2026-1-23 14:59
是定义了一个变量 mm , 然后变量的值和常量比较
但是,你这个写法我看了很多遍,mm不是变量,明明是个类型啊,是unsigned long类型的别名。
页:
[1]
2