【C/C++】C++基本语法

以#include指令开头,包含来自标准库的头文件,用<>包围头文件名。对于不属于标准库的头文件,用“ ”包围头文件名。

C++字符集

大小写的英文字母:A~Z,a~z

数字字符:0~9

特殊字符:!@#¥%_&*(){}[]<>?|/\';:?,.~

C++标识符的构成规则

①以大写字母、小写字母或下划线_开始

②可以由以大写字母、小写字母、下划线_或数字0~9组成

③大写字母和小写字母代表不同的标识符

④不能是C++关键字或操作符

读取数量不定的输入数据

while(cin>>value){}

while会一直执行至遇到文件结束符(或输入错误)。

后缀

后缀L表示类型至少是long

后缀LL表示类型是long long

后缀U表示unsigned类型

后缀F表示float类型

符号常量

形式: const 数据类型说明符 常量名=常量值;

符合常量在定义时一定要初始化,在程序中间不能改变其值(只能用,不能修改)

基本算术运算符

1、/(若整数相除,结果取整)

2、%(祛瘀,操作数为整数)

3、++,--(自增、自减):

++i; //先将变量i+1,然后变量继续参与其他的运算;

i++; //先将变量生成副本参与其他的运算,然后再将变量+1;

4、逗号运算和逗号表达式

格式:表达式1,表达式2

求解顺序

先求解表达式1,在求解表达式2

最终结果为表达式2的值

例:a=3*5,a*4 //结果为60

5、关系运算与关系表达式

优先次序:<=、>=、>、<(高) ==、!=(低)

关系表达式其结果类型为bool,值只能为true或false

6、条件运算符与条件表达式

形式:表达式1 ? 表达式2 : 表达式3

表达式1必须为bool类型

执行顺序:求解表达式1,表达式1为真,则求表达式2;表达式为假,则求解表达式3;

条件运算符优先级高于赋值运算符,低于逻辑运算符

sizeof运算,位运算

1、sizeof运算符

形式: sizeof(类型名)或sizeof 表达式

结果值:“类型名”所指定的类型或”表达式“的结果类型所占的字节数

2、位运算

按位与:& //用来将某些位置0

按位或:| //用来将某些位置1

按位异或:^ //对应位相同为0,对应位不同为0. 指定将某些位翻转(0与异或保持原值,与1异或取反)

按位取反:~

移位: 左移运算:<< //左移后,低位补0,高位舍弃

右移运算:>> //低位舍弃,高位:无符号补0,有符号补‘符号位’

隐含转换

基本原则:降低类型数据转换为高类型数据

显示转换

形式: 类型说明符(表达式)

(类型说明符)表达式

类型转换操作符<类型说明符>(表达式)

类型转换操作符:static_cast、const_cast、dynamic_cast、reinterpret_cast

例:int(z),(int)z,static_cast<int>(z)

命名的强制类型转换

形式:cast-name<type>(expression)

cast-name:static_cast、dynamic_cast、const_cast、reinterpret_cast

static_cast:显示地执行某种定义明确的类型转换,任何具有明确定义的类型转换,只要不包含底层const,都可以使用;

const_cast:只能改变运算对象的底层const,只有const_cast能改变表达式的常量属性。

reinterpret_cast:把运算对象的内容解释成另外一种类型。

dynamic_cast:支持运行时类型识别。

指针

指针初始化形式: int *p = &ival; //p时指向变量ival的指针

p = &ival; //p赋值ival地址,指向ival

*p = ival; //pi指向ival

空指针

int *p = nullptr;

空指针用nullptr来初始化指针。

void* 指针

可以用于存放任意对象的地址。

指向指针的引用

int *&r = p; //r是一个对指针p的引用

常量表达式

constexpr是指值不会改变并且在编译过程就能得到计算结果的表达式。

类型别名

类型别名是一个名字,某种类型的同义词。

关键字typedef:

typedef  已有类型名  新类型名表;

typedef double wages; //wages是double的同义词

关键字using:

using  新类型名 = 已有类型名;

using SI = Sales_time; //SI是 Sales_time的同义词

auto:编译器通过初始值自动推断变量的类型。auto类型说明符,能让编译器替我们去分析表达式所属的类型。auto定义的变量必须有初始值。

auto item=val1+val2; //item初始化位val1和val2相加的结果。

auto一般会忽略顶层const。

decltype:定义一个变量与某一表达式的类型相同,但并不用该表达式初始化变量

decltype(i) j = 2; //i为int类型,则j为int类型

switch语句:

switch  (表达式)

     { case    常量表达式:语句;break;

default:

语句;break;}

每个case分支最后应该加break语句。case分支可包含多个语句,且不用{ }。

枚举类型:

不限定作用域枚举类型:

枚举元素是常量,不能对它们赋值;

枚举元素具有默认值,可以在声明时另行指定枚举元素的值;

整数值不能直接赋给枚举变量,如需要将整数赋值给枚举变量,应进行强制类型转换。枚举值可以赋给整型变量。

定义方式:将全部可取值一一列举出来。

语法形式:enum  枚举类型名  {变量值列表};

enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT}; //默认SUM=0,MON=1..

基于范围的for循环

语法形式:for(declaration:expression){statement;}

其中:

expression部分表示一个对象,用于表示一个序列。

declaration部分负责定义一个变量,该变量将被用于访问序列中的基础元素。

每次迭代,declaration部分的变量会被初始化为expression部分的下一个元素值。

若迭代器变量的值希望能够在for中被修改,可以采用引用&的方式;

 

 

 

注意:

浮点数在编译器里面赋值时近似相等的,不能比较2个浮点数大小,只能通过作差结果无穷小。

'A'单独的字符A,“A”一个字符的数组,该数组包含:字母A,空字符'\0'

编译器再每个字符串结尾处添加一个空字符'\0'

break语句

使程序从循环体和switch语句内跳出,继续执行逻辑上的下一条语句。不宜用在别处。

continue 语句

结束本次循环,接着判断是否执行下一次循环。

goto 语句

使程序的执行流程跳转到语句标号所指定的语句。不提倡使用。

 

 

 

 

变量命名规范:

标识符体现实际含义

变量名一般用小写字母

用户自定义的类名一般以大写字母开头

如果标识符有多个单词组成,则单词间应有明显区分。

预处理变量的名字全部大写。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值