数据类型的极值对运算的影响
大家先看看这两个小程序,一个类型为 int ,而一个类型为 unsigned ,是进行求余和除运算. unsigned 型的可以 oj,而 int 型的为 wr ,请大家帮我解释一下是为什么呢?最好从底层讲解,谢谢大家哦.code 1:
程序代码:
#include<stdio.h>
#include<stdlib.h>
int NumConvert(int m, int k)
{
char *s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int a[100];
int i;
unsigned n;
if(!m)
{
putchar('0');
return 0;
}
if(m<0)
{
putchar('-');
n*=-1;
}
n=abs(m);
for(i=0;n;)
{
a[i++]=n%k;
n/=k;
}
while(!a[--i])
;
for(;i>=0;--i)
{
printf("%c",s[a[i]]);
}
return 0;
}code 2:
程序代码:
#include<stdio.h>
#include<stdlib.h>
int NumConvert(int m, int k)
{
char *s="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int a[100];
int i;
int n;
if(!m)
{
putchar('0');
return 0;
}
if(m<0)
{
putchar('-');
n*=-1;
}
n=abs(m);
for(i=0;n;)
{
a[i++]=n%k;
n/=k;
}
while(!a[--i])
;
for(;i>=0;--i)
{
printf("%c",s[a[i]]);
}
return 0;
}











