我的目标是有一个unsigned int值的排序升序列表,我用它sub_func来选择哪一个更大.
该sub_func回报是int因为我想比较哪一个是更大的所有数字,它工作正常,但是,我有一个问题,当我定义unsigned int类型是的最大值(0xffffffff == -1).我想更多地了解这里的无符号数字.我该如何解决这个问题?
我有以下代码:
#define p_max (0xffffffff)
uint32 a = p_max;
uint32 b = 20;
int sub_func(uint32 a, uint32 b)
{
return (b - a);
}
Run Code Online (Sandbox Code Playgroud)
后退是21,我希望它是20 - MAX,这将是负数,我的返回类型是负数.
但是,我认为它总是一个正数.我不想要的,如何解决这个问题?
(假设uint32是32位无符号整数类型).
b - a是一个带有类型的表达式,uint32因为两个操作数都属于该类型.由于标准定义的环绕行为uint32,它的值为21.
您将其分配给int类型,因此返回值.
| 归档时间: |
|
| 查看次数: |
210 次 |
| 最近记录: |