【问题标题】:What does the following code fragment (in C) print?以下代码片段(在 C 中)打印什么?
【发布时间】:2010-12-07 13:54:22
【问题描述】:

以下代码片段(用 C 语言)打印什么?

int a = 033;
printf("%d", a + 1);

【问题讨论】:

  • 你自己试过了吗?这通常是找出答案的最好方法。问为什么是另一回事。
  • 谢谢科迪,我只是需要一个“快速回答”。感谢所有回复。

标签: c printf fragment


【解决方案1】:

033 是一个八进制整数文字,其值为8*3+3 = 27。您的代码打印出28

0 开头的整数文字是八进制。如果它以0x 开头,则为十六进制。

顺便举个例子

int x = 08; //error

是一个编译时错误,因为8 不是八进制数字。

【讨论】:

    【解决方案2】:

    我会冒险猜测并说28 :)

    【讨论】:

    • 感谢 mingos 和 darioo。我想知道如何关闭这篇文章
    【解决方案3】:

    28.

    033 是 C 中的八进制数,因为它有一个前导“0”,这意味着它的值是十进制的 27。

    所以,27 + 1 = 28

    【讨论】:

      【解决方案4】:

      这里有一个提示:

      • 以零开头的 3 位数字是八进制数。
      • 以“0x”开头的 2 位值是十六进制。

      试试看这个例子:

       #include<stdio.h>
       main()
       {
       int a = 033;
       printf("\nin decimal: %d", a+1);
       printf("\nin hex: %x", a+1);
       printf("\nin octal: %o", a+1);
       }
      

      这会导致:

      in decimal: 28
      in hex: 1c
      in octal: 34
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-02-14
        • 2021-02-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多