warning: format '%d' expects argument of type 'int', but argument 2 has type 'long int' [-Wformat=]|
在printf中%d用于int或者比int小的整数类型。比int小的类型被转型成int。
%ld用于long类型,%lld用于long long类型。
warning: suggest parentheses around '&&' within '||' [-Wparentheses]|
少了圆括号。
今天还遇到了一个问题,原来scanf 函数不用加\n换行,自己带有,如果我加了,那么在我输入完数据后,控制台不会出现下一步该运行的结果,就只会是单纯换行而已。
#include<stdio.h>
#include<string.h>//n进制转换为十进制
int main()
{
int i,n,t,t1;
long t2;
t2=0;
char a[100];
printf("Please input a string that you want to convert:\n");
gets(a);
strupr(a);
t=strlen(a);
printf("Please input n(2or8or16):\n");
scanf("%d",&n);
for(i=0;i<t;i++)
{
if(a[i]-'0'>n&&(a[i]<'A'||a[i]-'A'+10>=n))
{
printf("error!\n");
exit(0);
}
if(a[i]>='0'&&a[i]<='9')
t1=a[i]-'0';
else if(n>=11&&(a[i]>='A'&&a[i]-'A'+10<=n))
t1=a[i]-'A'+10;
t2=t2*n+t1;
}
printf("The decimal is %ld.\n",t2);
}