比较两个整数的大小 不用关系比较符(C语言)

供稿:hz-xin.com     日期:2025-01-13
在c语言(vc6)中比较两个无符号整数大小的方法(不能使用>与<号)

int cmpNumber(unsigned a, unsigned b){ int number = sizeof(unsigned) * 8; unsigned tempa; unsigned tempb; unsigned tempResult; unsigned modelNumber = 1; while(number){ modelNumber = 1; tempa = a >> (number - 1); tempb = b >> (number - 1); //get digit number one by one tempa &= modelNumber; tempb &= modelNumber; tempResult = tempa - tempb; if(!tempResult){ number--; continue; } if(!(~tempResult)){ cout << a << " is smaller than " << b <<endl; return -1; }else{ cout << a << " is bigger than " << b << endl; return 1; } number--; } //equal cout << a << " is equal to " << b << endl; return 0;}万次随机数测试, 无误。

strcmp函数是用来比较字符串的,而字符串以'\0'作为结尾标志,故要加上&&a[i]!='\0'。

一楼的做法严格说还是有点问题,因为abs函数本身就用到关系比较符:
nt __cdecl abs (
int number
)
{
return( number>=0 ? number : -number );
}

这是另一种方法,通过取符号位:
#include <stdio.h>

typedef union
{
int nVal;

struct
{
unsigned int abs : 31;
unsigned int flag : 1; // 符号位
} sVal;
} data;

void main()
{
int a, b, c;
data d1, d2;
char res[4] = {'>', '=', '<', '<'};

printf("Input 2 numbers:");
scanf("%d %d", &a, &b);

d1.nVal = a - b; // 判断出 a >= b, 或者 a < b
d2.nVal = d1.sVal.abs - 1; // 判断出 a = b
c = d1.sVal.flag * 2 + d2.sVal.flag; // 0 : a > b, 1 : a = b, 2,3 : a < b

printf("%d %c %d\n", a, res[c], b);
}

int a,b,max,min;
scanf("%d%d",&a,&b);
max = ((a+b)+abs(a-b))/2;
min = ((a+b)-abs(a-b))/2;
printf("%d %d",max,min);

比较两个整数的大小 不用关系比较符(C语言)
一楼的做法严格说还是有点问题,因为abs函数本身就用到关系比较符:nt __cdecl abs (int number ){ return( number>=0 ? number : -number );} 这是另一种方法,通过取符号位:include <stdio.h> typedef union { int nVal;struct { unsigned int abs : 31;unsigned int flag : 1; ...

在c语言(vc6)中比较两个无符号整数大小的方法(不能使用>与<号)_百度...
int cmpNumber(unsigned a, unsigned b){ int number = sizeof(unsigned) * 8; unsigned tempa; unsigned tempb; unsigned tempResult; unsigned modelNumber = 1; while(number){ modelNumber = 1; tempa = a >> (number - 1); tempb = b >> (number - ...

linux shell 如何比较两个整数的大小
-le 小于等于 (less than or equal)字串的比较:[ $str1 = $str2 ] 等于 [ $str1 != $str2 ] 不等于 [ -z $str ] 空字串返回true [ -n $str ] 或者 [ $str ] 非空字串返回true shell 程式设计 如何实现 比较两个整数的大小 假设有两个引数,$1和$2 max=0 if [ "$1...

两个无符号数比较大小是那个标志位
用进\/借位标志CF判断他们的大小。 有符号数相加减考虑SF和OF,BCD数考虑AF,无符号数考虑CF,另外无论什么类型的数都可以查ZF和PF。 所以,两个无符号数比较大小,只需要做减法,判断最高位是否产生了借位,从而判断大小,很好理解。 本回答由网友推荐 举报| 答案纠错 | 评论 9 0 鹏峰0 采纳率:33% 擅长: 暂未...

怎样用c语言比较两个小于等于1000的整数的大小
strcmp(A,B);strncmp(A,B,size);两种都可以,跟1000没有关系

比较两个数的大小,先比较什么
2、对比绝对值法:当两个数的符号相同时,比较两个数的绝对值的大小。如果a>b,则|a|>|b|;如果a<b,则|a|<|b|;如果a=b,则|a|=|b|。如果两个数的符号不同,则正负关系取决于正数和负数的大小关系。这种方法适用于所有规模的数据比较。3、分数的大小比较:分母相同的分数,分子大的...

怎么比较两个数的大小?
二、小数的大小比较:1、先比较两个数的整数部分,整数部分大的那个数就大;比如:6.1大于5.9,因为6.1整数部分是6,5.9整数部分是5,6>5,因此6.1大于5.9。2、整数部分相同,再看它们的小数部分,从高位看起,依数位比较,相同数位上的数大的那个数就大。比如:0.0223大于0.0199。三、...

比较两个数的大小时首先看两个数最高位上的数对吗
相对大小比较法是一种比较数的大小关系的常用方法。相对大小比较法通常根据数的大小关系,使用不同的符号进行表示。常见的符号有:“<”表示小于,“>”表示大于,“=”表示等于等.该方法基于对比数之间大小关系的不同结果进行判断 3、数线比较法 数线比较法又称为数轴比较法,它是一种以数轴为工具,...

比较两个数的大小时,先要比较什么
1、符号大小的比较:正数大于负数。2、分数的大小比较:分母相同的分数,分子大的分数大;分子相同的分数,分母小的分数大;分母不同的分数,先通分在比较。3、整数的大小比较:位数不相同时,位数多的数大;位数相同时,从最高位看起,相同数位上的数大的数大。4、小数的大小比较:先比较两个数的...

怎样比较两个整数的大小?
1、整数的大小比较:先看位数,位数多的数大;位数相同,从最高位看起,相同数位上的数大那个数就大。2、小数的大小比较先比较两个数的整数部分,整数部分大的那个数就大;整数部分相同,再看它们的小数部分,从高位看起,依数位比较,相同数位上的数大的那个数就大。3、分数的大小比较:分母相同的...