【问题标题】:what is the output this null character printing?这个空字符打印的输出是什么?
【发布时间】:2020-06-03 04:49:29
【问题描述】:

我期待printf("%c",i) 有一个空格,而它在评估语句后显然返回一个值,所以我认为它应该打印一个空白或其他值,因为它不是空字符串,它是空的字符。

我的意思是 printf 在调用完成时返回一些值,因为它是一个函数。所以当printf("%c",i) 返回一些值时,它应该打印一些东西。

#include<stdio.h>
int main()
{
    int  i = 0;
    if(printf("%c",i))
        printf("inside if block");
    else
        printf("inside else block");
    return 0;
}

【问题讨论】:

  • 您能更具体地谈谈您的问题吗?你想要什么,正在发生什么?
  • “%c” - 这就是它的处理方式。现在,printf 的结果是什么(根据文档),这与此代码/问题假定的期望有何不同?
  • ASCII 0 到 31 被称为“不可打印字符”。你觉得为什么他们有这个名字?

标签: c printf null-character


【解决方案1】:

我希望 printf("%c",i) 有一个空格

printf("%c",0) 将打印 空字符。在终端上看到的内容取决于实现。它可能是一个空格,什么都没有,^@ 等。它与 C strings 无关。

我是说 printf 在调用完成时返回一些值

printf("%c",i)return 值为“...传输的字符数,如果输出为负值 或发生编码错误。”(C17dr § 7.21.6.3 3)。printf("inside if block"); 肯定会被执行,因为 (printf("%c",i) 可能会返回 1。

【讨论】:

    猜你喜欢
    • 2014-08-23
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2020-11-08
    相关资源
    最近更新 更多