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

发布于 2022-09-04 04:45:55 字数 2195 浏览 22 评论 0

图片描述

图片描述

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

#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 类型的问题呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

风月客 2022-09-11 04:45:55

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

无戏配角 2022-09-11 04:45:55

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

很酷又爱笑 2022-09-11 04:45:55

出现这么不科学的事,把L1-011.cpp也贴出来。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文