【问题标题】:Why is the format string for int %d in C? [duplicate]为什么 C 中 int %d 的格式字符串是? [复制]
【发布时间】:2020-08-20 03:50:25
【问题描述】:

为什么C语言的创造者选择%d作为格式说明符而不是%i?也就是说d和一个整数有什么关系?

【问题讨论】:

  • x - 十六进制。 o - 八进制。 ? - 十进制

标签: c


【解决方案1】:

%d 代表十进制,而%i 代表整数。两者都是有效的格式说明符。

不同之处在于,对于scanf 和朋友,%i 将匹配具有不同基数的数字(就像您将 strtol 传递给 0 基数一样),但 %d 仅匹配基数为 10 的数字。对于 @ 987654328@也一样。

【讨论】:

    【解决方案2】:

    %d 仅表示整数十进制文字。 While
    %i 可以与任何形式的任何整数文字一起使用,例如八进制形式、十六进制形式和十进制形式(显然)。 为了简单起见,我添加了这个例子

    #include <stdio.h> 
      
    int main() 
    { 
        int a;
        scanf("%d", a);
        scanf("%i", a) ;
      
        return 0; 
    } 
    

    现在,尝试在您的 IDE 中运行该程序,并为第一个 scanf() 语句提供一个十六进制形式的输入,这将立即停止该程序。然而,如果我们在 "%d" 的空间中使用 %i,我们也可以输入十六进制值和八进制值。

    【讨论】:

      【解决方案3】:

      意思是“十进制整数”

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-03
        • 2021-10-17
        • 1970-01-01
        相关资源
        最近更新 更多