热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

为什么这个简单的程序打印"1HelloWorld"?

如何解决《为什么这个简单的程序打印"1HelloWorld"?》经验,为你挑选了1个好方法。

我仍然试图进入C++,我编写了这段代码:

#include 
using namespace std;

int main()
{

    cout <<" "<

输出是:

1Hello world!

为什么在Hello World之前有1?

编辑:我的程序确实编译,似乎我有一个旧的编译器版本.



1> templatetype..:

对您的问题的简短回答是,您用于输出数据的语法略有偏差.如果将一堆输出语句链接在一起,那么惯例就是将流放在最左边而不重复它.所以而不是写作

cout <<" " <

写吧

cout <<" "<

你在1这里看到的原因有点技术性.流类型都提供了一个重载的运算符,您可以使用它来测试流是否有效.例如,你可以写这样的东西:

if (cout) {
    // Everything is okay!
} else {
    // I don't know how you did it, but you broke cout and you can
    // no longer write anything to it!
}

(这通常用于输入流,但输出流也支持这一点).作为这种语法的结果,如果您尝试插入cout输出流,C++将首先尝试转换cout为布尔值并改为打印该值.默认情况下,布尔值打印为1(真)或0(假),因此您看到的1是C++说"是的,此流已启动并正在运行".

(从技术上讲,重载运算符会产生一个void*而不是一个bool,但我现在会对这个细节进行掩饰.)

请注意,现代版本的C++(C++ 11和转发版)不支持此行为,如果您尝试使用现代编译器执行此操作,则实际上会遇到编译器错误.如果可能的话,我建议升级你的编译器版本,这会给你一个错误,而不是生成不符合你的想法的代码.


推荐阅读
author-avatar
brucegogo03
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有