我写了这个函数来反转一个数字。我将有最多2 ^ 32的测试用例。我需要函数来返回无符号整数。我的问题是:为什么不打印?
#include <stdio.h>
#include <stdlib.h>
#include<string.h>
unsigned int reverse(unsigned int a);
int main(){
printf("%u\n",reverse(987654321));
//printf("%ui\n",reverse(987654321)); //this wont work either
return 0;
}
unsigned int reverse(unsigned int a)
{
int temp=0;
while(a>0)
{
temp=10*temp+a%10;
a/=10;
}
return temp;
}
是的,我确实忘记了proto-type ...跟我一起,我最近一直在做Java和Lisp。但是,我的编译器不断给我一个警告,说我在格式字符串中有额外的字符。如果我有类型“long long int”并且我在格式字符串中使用“%lli%”,它也会这样做,我也尝试过。
答案 0 :(得分:2)
您忘记在main
之前为您的函数添加原型。
unsigned int reverse(unsigned int a);
答案 1 :(得分:0)
对于您的架构上的unsigned
,该数字可能太大了。
请记住始终为编译器启用最大警告级别。这应该告诉您reverse
在您使用它的地方不知道,您将int
传递给%u
格式,并且您的号码太大了。