C++第一个程序:Helloworld

本节我们来学习C++的第一个程序。

俗话说:“万事开头难”,“好的开始便是成功的一半”。

话又说回来,人类最开始的学习行为:便是模仿——C++兼容C语言,相信类比学习在这儿会有举足轻重的作用。

你还记得C语言的helloword怎么样书写的吗?

#include <stdio.h>//为了使用printf函数,我们包含一个头文件
int main()//main函数乃程序入口
{
    printf("hello world\n");//printf是一个输出函数,将括号里的内容,默认输出到控制台上
    return 0;//代码走到这一行:意味着前面的代码都顺利进行,也意味着程序返回0结束
}

我们再来看c++的helloword:

#include <iostream>
using namespace std;
int main()
{
    cout << "hello world" << endl;
    return 0;
}

运行截图:

路是一步步走出来的,学习也是一步步来的;

#include <iostream>

iostream:

全写:input output stream ; 意为:输入 输出流。是标准的输入、输出流库,定义了标准输入、输出对象。

从C++角度出发:这里包含一个iostream类,是为了使用它的对象cout,cin;

从C角度看:这句#include <iostream>与#include <stdio.h>。都是为了后面代码调用相应的对象或函数。

所谓:有需求,就有供应。C++程序要对象,库就提供类;C里需要输出函数,库就提供函数声明(定义);

按我的理解:这里就凸显C++和C的不同,C++可以面向对象编程,而C还是围绕着各种函数实现各种功能。

using namespace std;

这一句就陌生了,三个词儿,俩关键字,一个缩写;

namespace:

namespace,意为:命名空间,c++的关键字(关键字,就是提示:取变量名,函数名时不能与之撞名)。

它的存在,即是为了避免命名冲突。此处关于namespace的知识:C++:namespace-CSDN博客相信你看完之后,对于namespace有了更多的收获。

我们在这里就直击要害,这句代码翻译成大白话即“使用命名空间std”。

何故?这是因为:

我们后面使用的cout/cin/endl等都属于C++标准库,C++标准库都放在⼀个叫std(standard)的命名空间中,所以要 通过命名空间的使⽤⽅式去⽤他们。

C++标准库:

如果没有修炼遗忘大法的同学,便知道我们刚刚还说了一个库——输入输出流库

C++标准库是一个庞大而全面的库,它包含了众多用于各种编程任务的类和函数。这些库旨在提高C++程序的开发效率和可重用性。C++标准库被组织成多个部分,包括但不限于算法、容器、迭代器、字符串处理、I/O(输入/输出)流、时间处理、本地化支持等。

C++标准库与输入输出流库的关系:

iostream(输入输出流)库是C++标准库中的一个重要组成部分,它专门用于处理输入和输出操作。iostream库提供了一系列用于输入输出的类和对象,其中最重要的是cin(用于从标准输入读取数据)、cout(用于向标准输出写入数据)和cerr(用于向标准错误输出写入数据)。这些对象分别对应于C++程序中的输入流、输出流和错误输出流。

简而言之,iostream库是C++标准库的一个子集,专门用于处理输入和输出任务。

那在此处:

第一个,逗号前面相信你能够理解(cout/cin/endl -> 输入输出流库 -> C++库),C++库外边用一个名叫std的命名空间进行隔离。需要使用特殊的三个方法来使用std命名空间中的类和函数——这里使用的,便是直接展开命名空间:using namespace 命名空间名。

总结:

为了使用后面的cout/cin/endl,我们在第一句话包含了iostream头文件,来使用iostream中的类和函数。但是发现iostream外层有个壁垒叫std,与当前域形成了隔阂,不可直接使用。故为了大量使用cout/cin且为了方便。我们直接展开std——using namespace std,这样就可以省略 std::cout 、std :: cin 、std :: endl前的endl。

namespace展开后就不存在,空间中的类和函数与当前空间融合,此时若发生命名冲突,就很麻烦了。故在⼀般⽇常练习中我们可以using namespace std,实际项⽬开发中不建议using namespace std。

如果直击要害还不能彻底理解,那我们还是追根溯源,打破砂锅问到底C++初阶_1:namespace-CSDN博客

#include <iostream>
using namespace std;
int main()
{
   
    return 0;
}

程序的入口——main函数

无论是在C/C++还是Java中,main函数/方法都是程序执行的起点。它负责初始化程序所需的环境,并调用其他函数/方法以执行程序的其余部分。在C/C++中,main函数返回一个整数,用于表示程序的退出状态;而在Java中,main方法没有返回值(即返回类型为void),但通常通过打印到控制台或其他输出流来与用户交互。

public class HelloWorld {  
    public static void main(String[] args) {  
        // 程序代码  
    }  
}

这里的C++同样使用main函数,靠最后返回0这个整数,表示程序顺利退出,默认使用0。而在程序中途返回,一般被视为异常。

输出hello wolrd

cout << "hello world" << endl;

std::cout 是 ostream 类的对象,它主要⾯向窄字符的标准输出流。

std::endl 是⼀个函数,流插⼊输出时,相当于插⼊⼀个换⾏字符刷新缓冲区。(当下可不管endl本质为何是个函数,可默认与“\n”,'\n'无异)。

<<是流插⼊运算符,>>是流提取运算符。(C语⾔还⽤这两个运算符做位运算左移/右移)
可以看到 << 是二元运算符,因为它的左右两侧都只有一个参数。左边是cout ,默认输出流连接到控制台,即输出到控制台。 右边的参数可以是这里的字符串、char类型、int类型、double类型...
这句话的输出按照从左到右。hello world距离输出流最近,故先进入流进行输出,再接着是换行。

C++的输入输出与C相比

使⽤C++输⼊输出更⽅便,不需要像printf/scanf输⼊输出时那样,需要⼿动指定格式,C++的输⼊
输出可以 ⾃动识别变量类型 (本质是通过函数重载实现的,这个以后会讲到),其实最重要的是
C++的流能更好的⽀持⾃定义类型对象的输入输出(这个咱们以后再学)。
//C++的输入与输出
#include <iostream>
using namespace std;
int main()
{
    int a = 0;
    double b = 2.22222222;
    char c = 'c';
    cout << a << " " << b << " " << c << endl;//可以自动识别类型,输出
    //但是这样不能格式化,double型精确度在5位

    return 0;
}

运行截图:

你会发现,a b c 三种类型变量都按照其类型输出(只是double默认最大输出5位),说明它输出时具有自动识别类型的功能。

我们再来看C代码:

#include <iostream>
using namespace std;
int main()
{
    //使用scanf和printf格式化输出
    scanf("%d %lf",&a,&b);//0 2.222222222
    printf("%d %.2lf\n", a, b);
    return 0;
}

结果:

可以看到,C不能自动识别变量类型,但可以格式化;C++可以自动识别,不能格式化。如果需要格式化,C++另有函数可以实现。不过,本着大道至简的原则,需要格式化咱就用C,不需要格式化就用C++,简单省心。

关于提高性能:

#include <iostream>
using namespace std;
int main()
{
    //在io需求比较高的地方,如部分大量输入的竞赛题中,加上以下3行代码
    // 可以提高C++IO效率
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    return 0;
}

本节的HELLO WORLD程序就结束了,C++之路漫漫,学海亦无涯。

参考代码如下:

#include <iostream>
using namespace std;
int main()
{
    cout << "hello world" << endl;
    return 0;
}
  • 18
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值