为何我C++中'\0'在控制台输出的时候变成a了?

图片描述

图片描述

不知道这是为什么
代码如下

#include <iostream>
#include <string>
#include <cstdio>
using namespace std;
int main()
{
    char a='\0';
    char b=' ';
    cout<<"a:"<<a<<endl<<"b:"<<b<<endl;

    return 0;

}

——————————————————2016.11.22更新问题
今晚回宿舍试了下,开机重新打开的dev,只打开了上次那个文件,如图
图片描述

输出的还是a,然后我换VS试了一下,如图:
图片描述

同样是a。
这是什么情况?

另外求推荐好用的C++,C的编译软件,一般做算法题用,不做什么大项目

换了Code::Blocks了还是一样的结果,这问题无解了?
图片描述

——————————————————————————2016.11.23更新问题
使用printf("%c",a)
还是一样的结果
图片描述

然后用chcp查了一下系统编码,是默认的GBK,换成UTF-8,但是我发现这样只能在当前窗口有效,重新打开又会恢复默认的GBK,于是我把.cpp文件换成UTF-8的编码,结果和原来一样,但是头文件前面多了中文字符。。这又是什么鬼
图片描述

————————————————2016.12.3——————————————
今天又看了一下,先用字符串输出的,输出空字符,还以为正常了,换了char变量来存储之后,和以前一样
换成string来存储就正常了。

代码:

#include<iostream>
#include<math.h>
using namespace std;
int main(){
    char b = '\0';
    string c = "\0";
    cout << "1 输出的值:" << b << endl;
    cout << "2 输出的值:" << "\0" <<endl;
    cout << "3 输出的值:" << c <<endl;
    return 0;
}

图片描述

这是不是char 和string 类型的问题呢?

阅读 6.8k
3 个回答

你的代码没问题,关了另一个文件。还有不要用DEVCPP,换VS或者直接用Linux+GCC。
图片描述

devcpp很适合用来做算法题目的。小巧很多,而且可以用很新的gcc版本。我以前经常用。vs2015 community太大了,装硬盘要占用20多G呢。
你先试一下printf("%c",a)行不行。
可能和你系统设置的代码页有关系。你右键单击那个cmd窗口标题栏,进去看一下系统编码是什么。或者打开一个命令行窗口,输入chcp回车,把结果贴出来

推荐问题