例2-1
一、hello world认识C++
#include <iostream >
using namespace std;
int main()
{
cout << "hello!\n";
cout << "Welcome to c++!\n";
return 0;
}
1.cout 表示将XX输出到显示屏上,是C++自带的库函数之一
2.<<表示嵌入的内容,""内的东西直接输出文本而不运行,endl=\n使输出的东西换行,用;结束一段代码
3.int main(){XXX;
;
return 0;}表示主函数,C++中每个程序都必须有主函数,其中可以包含其他函数。简单函数中()常为空,后面学完可以调用其他指针;{}表示函数内容;int表示函数类型(整数类型)。函数必须要有计算结果,所以用return 0表示其返回的函数值。
二、I/O流
1.C++中将数据从一个对象到另一个对象的流动抽象为“流”,流在使用前要创建,使用后要删除。提取操作:从流中获取数据,插入操作:向流中添加数据。数据的输入输出通过I/O流实现,cin与cout是C++中预定义的流类对象。cin是标准输入,即键盘输入;cout是标准输出,即屏幕输出。
2.cout<<XXX<<xxx…;实现输出
int a,b;
cin>>a>>b;实现输入,二者都可同时用多个表达式
三、C++可用字符集
1.大小写英文字母
2.数字字符
3.特殊字符:
四、词法记号
• 关键字 C++预定义的单词,如int,if,return
• 标识符 程序员声明的符号,如a,b
• 文字 程序中直接使用符号表示的数据
• 操作符 实现各种运输所使用的符号,如<< >>
• 分隔符 {} , : ; ()
• 空白符 空格,制表符(TAB键产生的字符),垂直制表符,换行符,回车符和注释
标识符的构成规则:
• 以大小写字母或下划线开始
• 后跟大小写、下划线、数字
• 大小写敏感
• 不能是C++关键字或操作符
五、基本数据类型
1.C++能够处理的基本数据类型
• 整数
○ 基本的整数类型 in
○ 符号 signed 和无符号 unsigned(不分正负)
○ 数值范围 短整数short长整数long长长整数long long
○ Char 字符型
文字常量表示方法: 十进制 0-9
八进制 0+0-7
十六进制 0x+0-9/A-F
后缀 u LL S L
• 浮点数(实数)
○ 单精度 float
○ 双精度 double
○ 扩展精度 long double
文字常量表示方法: 一般形式 如12.5 -12.5
指数形式 如0.345E+2表示0.345乘以10的2次方,-34.4E-3表示-34.4乘以10的-3次方
浮点常量默认为double型,后缀为f可使其为float型,如12.3f
• 字符 表示汉字等
• 布尔 表示逻辑真假
字符和布尔都是非数值类型
2.程序中的数据
• 常量 源程序中直接写明的数据,值在整个程序中都不改变
• 变量 运行过程中可以改变的量
变量的定义:数据类型 变量名1;变量名2;…
同时还可以初始化变量,如int a=0;
int a(0);
int a={0};
使用{}的初始化方式称为列表初始化,不允许信息丢失.
C++基本数据类型没有字符串类型,只有字符类型,字符串必须用string类
• 符号常量
3.sizeof运算符
• 语法形式 sizeof(类型名)或sizeof 表达式
• 结果值 类型名所指定类型\表达式的结果类型所占字节数
• 例如 sizeof(short) sizeof x
4.auto类型与decltype类型
• auto让编译器通过初始值自动推断变量的类型
例如:auto val = val1+val2;
val的类型取决于表达式val1+val2的类型
• decltype让一个变量与某一表达式类型相同,但不用该表达式初始化这个变量
例如:decltype(i)j = 2; //表示j以2为初始值,类型与i一致
5.符号常量------由const修饰的对象(略)
六、算术运算符与算术表达式
1.基本运算符
+ - * /(只取商整数)
%(只取余数得到整数)
2.优先级与结合性
先乘除后加减,同级自左向右
3.自增自减
i++;--j;(前置自增自减和后置~,此处不讨论差别)功能是让自己的值加一或减一
七、赋值运算符和赋值表达式
“=”表示赋值
例如:n=n+5(就是高中程序框图)
八、逗号运算符和逗号表达式
1.格式 表达式1,表达式2,···
2.求解顺序和结果 依次求解表达式,最终结果为表达式n
3.例:a= 35,a4; return a;得到a=60
九、关系运算符与关系表达式
1.关系表达式是一种简单的逻辑运算,优先顺序为:
< <= > >= 高优先级,优先级相同
== != 低优先级,优先级相同
2.输出结果只能为true or false
十、逻辑运算符与逻辑表达式
1.运算符
!(非) &&(与) ||(或)
高优先 ----------低优先
2.表达式
如(a>b)&&(x>y),结果只能为true or false
3.与和或的短路特性
例如:表达式1&&表达式2.先求解1,若1为false,直接输出,不再求解2;若1为true,则求解2,以2的结果为最终结果.注意该特性可能导致2中变量数值不如预期般改变!
十一、条件运算符与条件表达式(推荐使用:if else、do while代替)
例如:x=a>b?a:b;运算a>b,若true,则x=a;若false,则x=b
优先级:赋值运算符<条件运算符<逻辑运算符
十二、位运算---将两个运算量的每一字节进行“与;或;异或;取反;移位"操作(略)
十三、混合运算时数值类型转换原则
1.非布尔变布尔:0变为false,其他全为true
2.布尔变非布尔:false变0,true变1
3.浮点数变整数,只保留整数部分,丢失小数部分
4.整数变浮点数,小数部分记作0(若整数超过存储空间,会有精度损失)
5.转换方式---显式转换和隐式转换
显式转换可以理解为强制转换,更安全,也利于后续代码阅读
• 语法:类型说明符(表达式)or(类型说明符)表达式or类型转换操作符<类型说明符>(表达式)
• 类型转换操作符例如:const_cast dynamic_cast static_cast
• 例如:(三种方式完全等价)int(z),(int)z,static_cast<int>(z)