今日博客啊

文章讲述了在C语言编程中遇到的警告,如printf中的%d与long类型使用,scanf换行符的处理,以及如何正确进行n进制到十进制的转换。
摘要由CSDN通过智能技术生成

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);
}

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值