数据类型的极值对运算的影响
大家先看看这两个小程序,一个类型为 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; }