基础函数求整数类型极限

  看这个问题没有人写,我就整一个,经过vs2010的演算,long long, long, int, short的上下限都可以套用,不过求最小值的时候直接就偷懒用max取负减一了,实话实说,这个程序好像没什么实际用途,只能用来求整数类型的极限。

  具体怎么套用,我程序里标注了,全对着换了肯定没bug。

#include<stdio.h>

long long MAX()//long long -> what you want
{
	short i,n;
	long long x=0,a=10,b=1,t,t0;//long long -> what you want
	for(n=1;;n++)
	{
		if(a<0 || a/b!=10)break;
		else b=a;
		a*=10;
	}
	for(;n>0;n--)
	{
		for(i=9;i>0;i--)
		{
			a=b*i;
			t=x+a;
			if(t<0 || a/b!=i)continue;
			else {t0=t;break;}
		}
		x=t0;
		b/=10;
	}
	return x;
}
long long MIN()//long long -> what you want
{
	long long x;//long long -> what you want
	x=-MAX()-1;
	return x;
}
int main()
{
	long long y,y1;//long long -> what you want
	y=MAX();
	y1=MIN();
	printf("MAX=%lld\n",y);//%lld -> what you want
	printf("MIN=%lld\n",y1);//%lld -> what you want
	return 0;
}

效果:

我是一个初学者,用的还不太熟练,要是有大佬可以优化一下的话,还请不吝赐教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值