Mac下VSCode+Code Runner运行C++输出末尾%符号的成因及解决办法
Mac下VSCode Code Runner运行C++代码末尾出现%符号的原因及解决方法
成因
这个%符号是Zsh Shell的提示符标记:当你的C++程序输出内容没有以换行符结尾时,Zsh会在输出末尾显示该符号,用于提示当前光标位置处于上一行输出的末尾,而非新行开头。
比如代码如果是这样:
#include <iostream> int main() { std::cout << "Hello World"; // 未添加换行符\n return 0; }
运行后就会因为缺少结尾换行,触发Zsh的这个提示符号。另外Code Runner在Mac下默认用Zsh执行编译后的程序,所以会出现该现象。
解决方法
1. 在代码中添加结尾换行
修改C++代码,确保输出内容末尾带有换行:
#include <iostream> int main() { std::cout << "Hello World" << std::endl; // 用endl自动添加换行 return 0; }
或者直接添加\n:
std::cout << "Hello World\n";
2. 修改Code Runner配置强制补换行
如果不想每次修改代码,可以调整VSCode的Code Runner设置:
- 打开VSCode设置(快捷键
Cmd+,) - 搜索
Code Runner: Executor Map,点击编辑 in settings.json - 找到C++对应的配置项,默认如下:
修改为:"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
新增的"cpp": "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt && echo"&& echo会在程序运行结束后自动输出一个换行,抵消Zsh的%符号。
也可以搜索Code Runner: Run In Terminal并勾选该选项,让程序在独立终端窗口运行,同样不会显示这个符号。
内容的提问来源于stack exchange,提问作者Dennis Kozevnikoff
相关产品推荐
相关产品推荐

