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] int 2或4,与机器有关 与机器有关
unsigned int 2或4,与机器有关 与机器有关
[signed] short [int] 2 -215-215-1
unsigned short [int] 2 0-216-1
[signed] long [int] 4 -231-231-1
unsigned long [int] 4 0-232-1

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

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

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的麻烦。

发布了23 篇原创文章 · 获赞 6 · 访问量 791
App 阅读领勋章
微信扫码 下载APP
阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览