文章目录
C++特点
- 全面兼容C,面向过程的程序设计
- 支持面向对象的方法
- 支持泛型程序设计方法
#include <iostream> //导入iostream,因为用到了cout
using namespace std; //打开std命名空间
int main()
{
cout << "Hello World!" << endl;//cout是一个c++对象,用来将得到的输出显示
cout << "welcome come to c++!" << endl;
return 0;
}
C++构词法
命名规则:
- 以大小写字母或下划线开始
- 可由大写字母、小写字母、下划线、或0~9组成
- 区分大小写
- 不能是C++关键字或操作符
可以看出规则和python一样
类型
整数类型:
- 基本整型:int
- 按符号分:有符号(signed),无符号(unsigned)
- 按数据范围分:短整数(short),长整数(long),长长整数(long long)
ISO C++标准没有明确规定每种数据类型的字节数和取值范围,只规定它们之间的字节数大小顺序满足:(signed/unsigned)signed char <= (unsigned)short int <=(unsigned)int <= (unsigned)long int <= long long int
字符类型(char):
- 容纳单个字符的编码
- 实质上存储的也是整数
浮点类型:
- 单精度(float)
- 双精度(double)
- 扩展精度(long double)
字符串类型:
- 有字符串常量
- 基本类型没有字符串变量
- 采用字符数组存储字符串(不推荐)
- 标准C++类库中String类(C++风格的字符串)用于字符串变量
字符串在内存中连续存放,以’\0’结束
定义变量时要初始化变量,这是一个很好的习惯
例如:
int a = 0, int a(0), int a ={0}, int a{0}
列表初始化不允许有数据丢失,例如用double类型的数初始化int类型
符号常量
例如:
const float PI = 3.1415926,只读,不可更改,只能初始化时赋值
练手
#include <iostream>
using namespace std;
int main(){
int number = 0;
cout << "please input a number!" << endl;
cin >> number;
cout << "The number is:" << number << endl;
cout << "Other number!"<< endl;
cin >> number;
cout << "The number is changed to" << number << endl;
system("pause");
return 0;
}
算数运算
基本算数运算符
- + - * /(若整数相除,结果取整)
- % (取余,操作数为整数)
优先级与结合性
- 先乘除,后加减,同级自左至右
++ ,-- (自增、自减)
- 例如 i ++ , – j
复合运算符
+=,-=,*= 等
逗号运算和逗号表达式
- 格式
表达式1,表达式2 - 求解顺序及结果
先求解表达式1,再求解表达式2,最终结果是表达式2的值
逻辑运算符
非:!
与:&&
或:||
条件运算符与条件表达式
- 一般形式
表达式1?表达式2:表达式3,表达式1必须是bool类型
x = a>b? a:b
条件运算符优先级高于赋值运算符,低于逻辑运算符
sizeof运算符
sizeof计算某个类型或变量占多少字节
- sizeof(类型名)或sizeof 表达式 返回所占的字节数
位运算——按位与(&)
将两个运算量的每一个位进行逻辑与操作
用途将某一位置0,其它位不变
位运算——按位或(|)
用途将某一位置1,其它位不变
位运算——按位异或(^)
将指定位置反转,与0异或保持原值,与1异或取反
位运算——移位(<<、>>)
- 左移运算(<<)
左移后低位补0,高位舍弃,相当于乘2 - 右移运算
低位舍弃,高位:有符号补符号位,无符号补0,相当于除2
混合运算时数据类型的转换——显示转换
- 显示类型的转换的作用是将表达式的结果类型换为类型说明符所指定的类型
语法形式: - 类别说明符(表达式)
- (类型说明符)表达式
- 类型转换操作符<类型说明符>(表达式)
操作符:const_cast, dynamic_cast, reiinterpret_cast, static_cast(强制类型转换)
int(z) == (int)z == static_cast<int>(z)
I/O流
- 在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前要被建立,使用后要被删除。
- 数据的输入与输出是通过I/O流来实现的,cin和cout是预定义的流类对象。cin用来处理标准输入,即键盘输入。cout是用来处理标准输出,即屏幕输出。
预定义的插入符与提取符
- "<<"是预定义的插入符,作用在流内对象cout上便可以实现向标准输出设备输出。
cout << 表达式 << 表达式…
标准输入是将提取符作用在流内对象cin上
- cin >> 表达式 >> 表达式…
- 提取符可以连续写多个,每个后面根一个表达式,该表达式通常是用于存放输入值的变量。例如:
- int a,b;
- cin >> a >> b;
switch
while
C++中的while不用冒号,用{}将循环体括起来。
# include <iostream>
using namespace std;
int main(){
int i = 1, sum = 0;
while (i <= 10) {
sum += 1;
i++;
}
cout << "Sum is " << sum << endl;
system("pause");
return 0;
}
do while
do while 循环体至少执行一次
For循环
for(初始语句;表达式1;表达式2)
初始语句:循环前先求解
表达式1:为true时执行循环体
表达式2:每次执行完循环体后求解
break
使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不易用在别处
continue
结束本次循环,接着判断是否执行下一次循环
goto
使程序的执行流程跳转到语句标号所指定的语句,不提倡使用。
自定义类型
- typedef 已有类型名 新类型名 ( c )
例:typedef double Area, Volume; typedef int Natural;增加可读性 - using 新类型名=已有类型名 (c++)
枚举类型
- 定义方式:将全部可取值一一列出来
- 语法形式:
enum 枚举类型名{变量值列表}
enum Weekday {SUN,MON,TUE,WED,THU,FRI,SAT}
默认情况下 SUN=0,MON=1,TUE=2,…,SAT=6
c++包含两种枚举类型
-
不限定作用域枚举类型:
enum 枚举类型名{变量值列表}- 枚举元素是常量,不能赋值
- 枚举元素具有默认值,依次为0,1,2,…
- 也可以在声明时另行指定枚举元素
如enum Weekday{SUN=7, MON=1,TUE,WED,THU,FIR,SAT} - 枚举值可以进行关系运算
- 整数值不能直接赋值给枚举变量,需要强制类型转换
- 枚举值可以赋给整型变量,因为它时整型变量的子集
-
限定作用域的enum类将在后续章节介绍
auto类型与decltype类型
- auto:编译器通过初始值自动推断变量的类型
例如:auto val = val1 +val2
如果 val1+val2是int类型,则val是int类型
如果val1+val2是double类型,则val是double类型 - decltype:定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量
例如:decltype(i) j =2
表示j以2作为初始值,类型与i一致
结构体struct
struct Mytimestruct {int year;
int moth;
int day;
int hour}
实例化:Mytimestruct mytime = {2020,12,2,14}
mytime.year = 2021