【问题标题】:What will be Output in C?C 中的输出是什么?
【发布时间】:2014-09-25 09:14:34
【问题描述】:

我在 C 中运行了以下代码段:

    printf("%%%\n");

我得到了输出“%”(不带引号)。谁能解释到底发生了什么? 为什么我们只有 1% 的登录结果?

【问题讨论】:

标签: c printf output


【解决方案1】:

%% 将打印%%\n 不是有效的 conversion specifier

您应该始终启用警告。请参阅以下内容:

 warning: unknown conversion type character 0xa in format [-Wformat=]
     printf("%\n");
                 ^

如 cmets 中所述,这是 undefined behavior,因为根据 C11 standard,如果:

— 在格式化输入/输出函数之一的格式中发现无效的转换规范 [...]

【讨论】:

  • 为什么我有两个%%作为输出?
  • @rakib 因为 %\n 不是有效的格式说明符。因为您应该始终启用警告。
  • 我使用 GNU GCC 编译器在 Codeblocks13.12 上运行了代码,它只给出了一个 % 符号,没有任何警告。我什至运行了 printf("%\n");但它也没有给出任何警告..我认为我的计算机中启用了警告(因为我在不同的问题中收到了一些警告)..你能解释一下为什么会这样吗?
  • @PascalCuoq 是的,但这确实解释了为什么它显示 %% 输出。
  • @Prakhar 我选错了标准报价。见编辑。
猜你喜欢
  • 2022-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多