C语言中有符号整数的取值范围

C语言中有符号整数的取值范围,第1张

哎呀,查了一下,发现说错了刚才,罪过啊!!~~二进制的负数是用补码来表示的,就是反码+1,反码是把每一位(除符号位)都求反,即每位0、1互换,所得的数再加1。
0就是0000
0000
0000
0000,第一位相当于符号位,正数取0,负数取1。
0111
1111
1111
1111表示正2的15次方减一,第一位0表示正数。负2的15次方减一就是1000
0000
0000
0001,第一位1表示是负数。所以负2的15次方是1000
0000
0000
0000。大概是这么回事

#include<stdioh>
int main()
{
int n;
scanf("%d",&n);
int max=0,m;
while(n>0)
{
m=n%10;
if (m>max) max=m;
n/=10;
}
printf("整数里最大的数为:%d\n",max);
}

有几种方法可以在程序中动态的获取int的最大值

1:计算获取

unsigned int a = 0;
int MAX = (~a)/2;

2:或者C++可以直接获取int最大值

std::numeric_limits<int>::max()。

3:自定义宏

#define MAX_INT ((unsigned)(-1) >> 1)

4:在limitsh/climits中,定义了INT_MAX,该宏会根据编译环境自动定义int的最大值,可以直接用


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13322130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-14
下一篇 2023-07-14

发表评论

登录后才能评论

评论列表(0条)

保存