当输出到控制台时,在linux中会添加一个“%”符号,C++

2cmtqfgy  于 2022-11-19  发布在  Linux
关注(0)|答案(2)|浏览(144)

我使用的是Manjaro Linux,发行版=22.0.0,GNOME 43.1,内核5.19.17-2,我使用的是zsh。
我决定学习C++,但我遇到了一个问题。如果我在输出到控制台时不添加std::endl,就会添加符号“%”。
参见随附的屏幕截图。
代码1:

#include <iostream>

int main()
{
    int age;
    age = 28;
    std::cout << "Age = " << age;
    return 0;
}

代码2:

#include <iostream>

int main()
{
    int age;
    age = 28;
    std::cout << "Age = " << age << std::endl;
    return 0;
}

为什么会发生这种情况?我所尝试的只是添加std::endl。我想知道为什么要添加“%”符号。

wr98u20j

wr98u20j1#

啊,你漏了最后一个换行符。
因此,您的shell * 应该 *(这是否与您的程序在输出中实际生成的内容非常相符)在输出的同一行上显示提示符。
这样看起来会很糟糕,也很混乱,所以,你的shell插入了一个特殊的字符和一个特殊的背景颜色来标记“嘿,这不是程序的输出,但我还是在这里插入了一个换行符,因为我不讨厌你,亲爱的用户”。
这个百分比符号不是来自你的程序,而是你的shell试图让它变得有意义。

fslejnso

fslejnso2#

从 zsh 的 手册 页 :
当 保留 部分 行 时 , 默认 情况 下 , 您 将 在 部分 行 的 末尾 看到 一 个 反 + 粗体 字符 :% 代表 一般 使用 者 , # 代表 root 使用 者 。 如果 设定 , shell 参数 PROMPT _ EOL _ MARK 可 用来 自 订 部分 行 结尾 的 显示 方式 。

相关问题