一、在windows上运行c++脚本
先安装MingW:安装教程
默认生成一个a.exe:
很奇怪为什么gcc不行g++可以?
在某种程度上gcc和g++都可以编译.cpp后缀的程序,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接。
后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序;后缀为.cpp的,两者都会认为是c++程序,注意,虽然c++是c的超集,但是两者对语法的要求是有区别的。C++的语法规则更加严谨一些。
编译阶段,g++会调用gcc,对于c++代码,两者是等价的,但是因为gcc命令不能自动和C++程序使用的库联接,所以通常用g++来完成链接,为了统一起见,干脆编译/链接统统用g++了,这就给人一种错觉,好像cpp程序只能用g++似的
g++ -o生成的是.exe了,总的来说就是g++一掺和好好的几步都会让他直接走到尽头生成.exe ^^
正常分段步骤:
- 预处理,不会产生新文件:
- 编译,产生.s文件:
- 汇编,产生.o文件(gcc指令具有包含性,直接gcc -c .cpp就包含上面两步)
- 链接,只有g++能完成
二、输入输出控制流
std::cout << "111" << std::endl;
等价于
(std::cout << "111") << std::endl;
上述输出语句使用了两次<<运算符。因为此运算符返回其左侧的运算对象,因此第一个运算符的结果成为了第二运算符的左侧对象。这样就可以将输出请求连接起来,链中每个运算符的左侧运算对象都是相同的。
endl的效果是结束当前行,并将于设备关联的缓冲区中的内容刷到设备。缓冲刷新操作可以保证到目前为止程序所处都真正写入输出流中,而不是仅停留在内存中等待写入流。
调试过程中的打印语句应该保证一直刷新流,否则输出可能还停留在缓冲区中导致崩溃未知的错误判断。
读取数量不定的输入数据
int value;
while(std::cin >> value)
这个语句在输入enter的时候不会停止循环,但在输入字母时会退出循环(证明不会默认类型转换为ASCII码),输入文件结束符(ctrl+z)再按enter也会退出,unix或mac系统是用ctrl+D
三、类简介
类机制是C++最重要的特性之一,C++最初的设计焦点就是能定义使用上像内置类型一样自然的类类型。其内定义了类对象可以执行是会发生的所有动作。
四、引入#include
#include时包含来自标准库的头文件时应该用<>保卫文件名,对于不属于标准库的头文件,如自己写的.h文件,则用双引号包围。