C++基础

2 C++基础

2.1 C++程序的结构

2.1.4 名称空间

using 声明语句同样有生命周期,只对新标准C++头文件有效,对旧标准的头文件using 语句没有意义

using namespace std;//声明一次使得标准库中的所有名称都可用
using std::cin;//声明一次使得标准库中的cin可用
std::cin;//使用一次,声明一次
2.1.5 C++语素

关键字

与类型有关union、violate
流程控制
存储属性register
其他asm、const_cast、dynamic_cast、mutable、reinterpret_cast、static_cast、template、typeid、typename、wschar_t

2.2 变量与基本类型

-2.2.1 变量
数据类型
基本数据类型
复合数据类型
int
float double
char
bool
pointer
引用
数组array
枚举enum
联合Union
结构struct
类 class
2.2.2 整形
类型字节数表示范围
[signed] int2或4,与机器有关与机器有关
unsigned int2或4,与机器有关与机器有关
[signed] short [int]2-215-215-1
unsigned short [int]20-216-1
[signed] long [int]4-231-231-1
unsigned long [int]40-232-1

[]:可省略。1字节8位

  • 整型在内存中是用二进制补码定点存储的。
  • 从可移植的角度选择short和long类型标识整数
  • size_t 方便系统间移植。在32位系统中为unsigned int(32位) ,在64位系统中为unsigned long(64位)
类型字节数
float4
double8
long double10
2.2.3 浮点数

每个浮点型量由符号位、阶码B、尾数C组成,大小为C*2B

2.2.4 基本字符型

转义字符:不能打印的特殊字符

符号含义
‘\n‘换行
’\r‘回车
’\t‘水平制表符
’\v‘垂直制表符
’\b‘退格
’\f‘进制

‘’’ ‘"’ ‘\’

2.2.5 宽字符型

cout、cin默认处理的是char型数据,不能直接用于处理wchar_t字符,iostream中提供了与此类似的wcout和wcin,专门处理wcahr_t型字符,此外可以通过前缀L指明wchar_t型常量或字符串

2.3 常量

通过程序或者输入无法改变常量值。
使用后缀区分整型常量和浮点型常量的长度。

2.3.1 整型常量和浮点型常量
  1. 表示一个整型常量

十进制:无前缀,int i=100;

八进制:0前缀,int i=0124;

十六进制:0x或者0X前缀,int i=0x64;

2.3.2 字符型常量

对双字符常量来说,系统将其解释为一个int型的数据,前面的字符作为低位字节,后面的字符作为高位字节,这种方式只适合可显示字符。对有些系统来说,int为2字节,则‘ABA’和‘ABAB’不合法,对int类型占4个字节的系统来说,'ABA’和’ABAB’可用。对任何系统来说,四位以上的字母组合都是不合法的。

字符常量可由转义代码表示,反斜杠后给一个八进制或十六进制的ASCII码,用单引号括起来,表示ASCII表中对应的字符。‘A’=’\0101’=’\0x41’

2.3.3 字符串常量

相比字符常量多’\0’

2.3.4 符号常量

用const修饰的标识符指向一个“只读”的程序实体,称为符号常量。与普通常量的不同之处,在于其像变量一样有标识符,有效提高了系统的可修改性和可读性。

调试变量可采用此方法减少修改量

数组的长度可用此定义。

const int PEOPLE=5;//在程序中可以用PEOPLE来代表5

应在声明同时对const常量进行初始化,一旦声明,const常量无法修改。

2.3.5 枚举常量

用户自己定义一种数据类型,并列举该数据类型的取值范围,每个枚举常量对应一个整数,一般情况下枚举常量不能计算。在对

enum 枚举类型名 {枚举常量1[=整型常数1],枚举常量2[=整型常数2],枚举常量3[=整型常数3],枚举常量4[=整型常数4],....}[变量名列表]
enum day{Sunday,Monday=10,Tuesday=10,Wednesday,Thursday,Friday=20,Saturday}curray;//Sunday=0,Monday=10,Tuesday=10,Wednesday=11,Thursday=12,Friday=20,Saturday=21

2.4 运算符与表达式

浮点数判断等价应该是一个区间

2.4.6 条件运算符

一个三目运算符

s1 ? s2 : s3;
2.4.7 位运算

位逻辑运算符:&(与)、^(异或)、|(或)、~(非)
移位运算符:<<(左移) >>(右移)

A<<n;/*A左移n位*/
A>>n;/*A右移n位*/
2.4.8 赋值运算

程序实体是内存中的一块可标识区域,左值是左值表达式的简称,是一个程序实体的表达式。判断一个表达式是否为左值的方法是看其能否放在等号[赋值号]的左边

  1. 声明时使用的“=”符号,称为初始化符,与赋值符不同。 同时声明两个变量并初始化的语句是非法的。
  2. 用const修饰的变量也是左值,但不能放在赋值号的左边,只有能被修改的左值才可以放在赋值号的左边
2.4.9 ++和–
a++;/*不是左值*/
++a;/*是左值*/
++++a;/*合法*/
++(a++);/*非法*/
++(a+b);/*非法*/
2.4.10 逗号表达式

用逗号分隔的一组表达式,从左到右计算,逗号表达式的结果是最右边表达式的值,其类型也是最后一个表达式的类型。

合理使用逗号表达式可以写出精炼的代码

2.4.11 sizeof运算符与sizeof表达式

其返回值为size_t,无符号整数,与负数比较时应转换为(int)

2.4.12 运算符的优先级和结合性
  • 操作数多的运算符优先级低,单目>双目>三目>赋值>逗号
  • 双目优先级:算术>比较>位>逻辑
  • 算术运算符:*、/和%的优先级高于+ -
  • 位:- >& >^ >|
  • 逻辑:!>&&>||
    赋值运算符具有相同的优先级
2.6.2 switch结构

为了程序的精炼,经常采用多个入口共用一个语句的写法

switch(x)
{
    case 1:case 3:case 5:
        cout<<"a"<<endl;
        break;
    case 2:case 4:
        cout<<"b"<<endl;
        break;
    default:
        cout<<"请检查输入是否正确"<<endl;
}
2.6.11 自由转向语句 goto

只要在某行前注以标号,便可以使用"goto+标号"的形式将流程转到该行。能从多重循环中一下子跳到外边,避免了运用多次break的麻烦。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值