有两个变量a和b,不用"函数,if"、"?:"、"switch"或其他判断语句,用类型转换找出两个数中比较大的。
时间: 2023-09-30 20:11:02 浏览: 52
可以使用类型转换和数学运算来实现。可以将两个数相减,然后通过比较它们的符号来确定哪个数更大。具体步骤如下:
1. 定义两个变量a和b。
2. 将它们相减并将结果赋值给一个变量c,即c = a - b。
3. 将c转换为unsigned类型,即unsigned int c = (unsigned int)(a - b)。
4. 如果c等于0,则a和b相等;如果c大于0,则a比b大;否则,b比a大。
所以可以这样实现:
```
int a = 10;
int b = 20;
unsigned int c = (unsigned int)(a - b);
int max = b - (c & ((a - b) >> 31));
```
在这里,我们使用了位运算符和位移运算符来实现比较大小。如果(a - b)是一个负数,那么右移31位将得到-1,而(c & -1)等于c本身。如果(a - b)是一个正数或者0,那么右移31位将得到0,而(c & 0)等于0。因此,最终的结果是b或a,具体取决于哪个数更大。
阅读全文