一个简单程序

一个简单程序

跟随黑马程序员C++学习完,有一定基础了开始学习C++Primer第五版

第一个程序

#include<iostream>
using namespace std;

int main()
{
    cout<<"hello"<<endl;
    return 0;
}

每个C++程序可能会有很多个(function)函数,但是有且只有一个mian,操作系统是通过调用main来运行C++函数的。

函数包括四个部分:返回类型,

int

函数名,

main

一个形参列表(可以为空)

()

以及函数体。

{
    cout<<"hello"<<endl;
    return 0;
}

std是指命名空间,可以帮助我们避免相同名字冲突,就是你用的东西是谁家的。

using namespace std;

在C++里面要注意符号,比如;,"",以及{},包括中文符号也会报错。

从一个源文件(.cpp)到可执行程序到底经历了哪几步?

编写好以后就需要编译,这取决于用的操作系统和编译器。而编译器一般都具备集成开发环境(IDE),但是是怎么样进行的?

1.进行预编译:这一步就是把你的头文件都拷贝进你的.cpp里面;把你的#define进行替换;处理条件编译指令,带#的;把注释给删除了;保留#pragma编译器命令,因为编译程序需要。*

*1:由于笔记本容量较小,下载的是VSCode,利用MingW进行编译。搜索得知MingW是把开源C语言编译器gcc移植到windows下。

*2:#pragma Para预处理语句(目前只看到#pragma once,只编译一次头文件):作用是设定编译器的状态,或者完成指定动作。比如说让输出窗口输出消息,或者是什么动作做多少次。

2.编译:高级语言翻译成机器语言,即完成词法分析,语法分析,语义分析然后优化为汇编语言(生成.obj文件)*,再转为二进制。

*:汇编语言是可以对硬件进行操作的,相较于机器语言,有相应英文缩写,更容易记忆。

3.链接:将生成的二进制的文件和包含的库(功能?)链接在一起,进行实现。

如何从.c到实现的过程,参考:

https://www.cnblogs.com/mhq-martin/p/11898245.html
(下面是命令行执行示例
$ g++ -o prog1 prog1.cc

$是系统提示符,-o prog1是编译器参数,指定了可执行文件的文件名。在不同的系统中,生成一个prog1 或者prog1.exe的可执行文件。

C:\Users\me\Programs> cl/EHsc prog1.cpp。

C:\Users\me\Programs>指的是你的目录,你现在在哪儿操作。cl是运行编译器命令。/EHsc是编译器选项,用来打开标准异常处理。

*:异常:结构化异常和C++异常
结构化异常:指的是整数/0,访问无效地址 常见代码
EXCEPTION_ACCESS_VIOLATION, EXCEPTION_STACK_OVERFLOW,EXCEPTION_INT_DIVIDE_BY_ZERO
C++异常:又称同步异常,一般是调用API导致

*:/EHsc (EH exception handling异常处理)是 /EHs 和/EHc 的结合
/EHa可以捕捉异常,让后面的东西继续运行,完成局部函数的析构,但是其他不可。但是假设不发生异常(?)太多了,后面专门学习。
关于异常处理命令

**

输入输出

C++没有定义任何输入输出语句,而是包含一个全面的标准库。日常用的是iostream库,包含istream和ostream表示输入流和输出流,表达随着时间的推移,字符是按顺序生成或消耗的。
​标准库定义的四个标准对象是cin(输入),cout(标准输出),cerr(标准错误),clog(输出一些程序运行时的消息)。

`

#include<iostream>
using namespace std;

int main()
{
cout<<"请输入两个数字"<<endl;
int a,b;
cin>>a>>b;
cout<<a<<" "<<b;
return 0;
}

而上面的箭头方向也表示字符流向,cout<<是留到显示屏,cin>>留到你留的位置。

endl被称为操纵符,意义是结束当前行,并将与设备相关联的缓冲区刷到设备中。这个动作可以保证产生的所有输出都真正写入输出流中,而不是停在内存等待写入。

注释

两种

//可以单行注释
/*可以多行注释
1111*/

但是他们不能嵌套,要不然就会出现漏网之鱼

控制流

语句都是按顺序执行的,但是有时我们想要不同的顺序,就有控制流语句。

while语句

while( i<10)
{
cout<<i<<" ";
i++;
}

while()里面跟的句子要有真假,满足就继续执行,如果不满足就停下。但是我刷题是遇到
while(nums[i]>j)无法识别的情况,nums是定义好的矢量数组,为什么不能这样呢?后面换成if()else()了就可以了。

for语句

for(int i=0;i<10;i++){int a;cin>>a;}

但是在写循环的时候注意不要越界,对于访问不到的地方记得处理。

有的数据长度不定可以用

while(cin>>a){a+=a;}

一直输入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值