第二章 数据类型、运算符和表达式

第二章 数据类型、运算符和表达式

  • 数据类型
    • 基本数据类型
      • 整型
        • 整型
        • 无符号整型
        • 短整型
        • 无符号短整型
        • 长整型
        • 无符号长整型
      • 字符型
      • 实型
        • 单精度实型
        • 双精度实型
        • 长双精度实型
      • 布尔型(逻辑型)
      • 输出基本数据类型的长度
  • 标识符
    • 关键字
    • 预定义标识符
  • 常量
    • 整型常量
    • 实型常量
      • 指数形式
    • 字符常量
      • 可视字符常量
      • 转义字符
    • 字符串常量
    • 符号常量
  • 运算符和表达式
    • 自增与自减
    • 前置与后置运算
  • 赋值
  • 关系运算符和关系表达式
    • 关系运算符
    • 逻辑运算符
    • 关系表达式
  • 条件运算符和条件表达式
  • 其他运算符
    • 逗号运算符
    • 取地址运算符&
  • 数据类型转换
    • 自动类型转换
    • 强制类型转换
    • 赋值表达式的类型转换

数据类型

基本数据类型
指针类型
引用类型
构造类型

基本数据类型

计算机处理数据方式:二进制形式

整型

以补码的形式存放。

整型

类型说明符:int
所占字节:4

无符号整型

类型说明符:unsigned int
所占字节:4

短整型

类型说明符:short int
所占字节:2

无符号短整型

类型说明符:unsigned short int
所占字节:2

长整型

类型说明符:long int
所占字节:4

无符号长整型

类型说明符:unsigned long int

字符型

以ASCII码表示(可进行算数和比较运算)。
类型说明符:char
所占字节:1

实型

单精度实型

类型说明符:float
所占字节:4

双精度实型

类型说明符:double
所占字节:8

长双精度实型

类型说明符:long double
所占字节:8

布尔型(逻辑型)

类型说明符:bool
所占字节:1

输出基本数据类型的长度

#include 
using namespace std;
int main ()
{
cout<<"XX型:"<

标识符

用于标识程序中的变量、符号、常量、数组、函数、数据类型等操作对象的名称,分为关键字、预定义标识符、用户定义标识符3种。

关键字

例如:for、int、if、do、while等。

预定义标识符

又称“保留字”。
预定义标识符不属于关键字。
例如:printf、define等。

常量

整型常量

十进制数
八进制数:以0打头的整数。(0-7)
十六进制数:以0x或0X打头的整数。(0-9和a-f,大小写不限)

实型常量

就是实数,也称为浮点数,默认为double。

指数形式

三部分:尾数部分 + E(e) + 整数阶码(一个都不能少)
尾数部分:整数部分 + 小数点 + 小数部分
阶码:正负皆可,只能为整型,不能为实数,
错误示范:E2、12.E-3.0、3.8e

字符常量

分为可视字符常量和转义字符。

可视字符常量

用单引号括起来的一个字符。‘a’、‘6’、’#’

转义字符

以 ’ \ ’ 开头,代表特殊意义,例如\a:bell;\n:回车换行;\r:回车;

做个区别:转义字符的’\ddd’与’\xhh’中 ddd为1-3位八进制数,hh为1-2位十六进制数,其输出是按照八、十六进制换算为十进制,再直接按照数在ASCII码表中寻找;而char类型变量,假设char ch=‘a’,若想把ch变为’k’,直接加10(ASCII对照:a:65,k=75,是按照十进制计算的,而非八进制或十六进制。

字符串常量

1.由一对双引号括起来的字符序列。
2.字符串长度:字符串中字符的个数,不包括定界符双引号,如"Good bye\n"的长度为9。
同样的例子,"Good bye\n"所占存储空间为10,在内存中是会在末尾添加\0。
思考:"I\n am a student\t\0"的长度?所占存储空间?sizeof显示的结果是?
(17,18,18)(存储时会在末尾再添加一个\0)

符号常量

const 数据类型 常量名=初始值;
#define 常量名 字符串

运算符和表达式

自增与自减

1.++与–的运算对象只能是变量,不能是常量或表达式。
2.右结合性:-a++等价于-(a++)

前置与后置运算

int i=1;
cout<

赋值

a+=1等价于a=a+1,其中+可换为-、*、/、%、^。

关系运算符和关系表达式

关系运算符

1.分为两级,第一级为:<,<=,>,>=;第二级为:==,!=
2.运算符的结合性为左结合。
3.优先级低于算术运算符,高于赋值运算符。

逻辑运算符

&&与||:分别表示逻辑上的与和或。
!:非。
注意:在运算(i++)||(j++)时,如果i++非零时,j++将不再运算。

int i=1,j=1;
cout<

三个逻辑运算符的优先级由高到低排序:!,&&,||。

关系表达式

三种关系表达式优先级由高到低排序:算术表达式,关系表达式,赋值表达式。

条件运算符和条件表达式

<表达式1>?<表达式2>:<表达式3>
1.C++中唯一一个三目运算符。
2.表达式1的结果为真,执行表达式2;
表达式1的结果为假,执行表达式3。
3.当一个表达式出现多个条件运算符时,应该将位于最右边的“?”和离它最近的“:”配对。
4.条件表达式中各表达式的类型可以不一致。表达式2和3类型不同时,条件表达式值的类型取两者中精度较高的类型。

其他运算符

逗号运算符

1.左结合。
2.优先级最低。

int a=2,b=4,c=6,x,y;
y=((x=a+b),(b+c));
cout<<"y="<

取地址运算符&

&<变量名>
得到的是该变量的存储地址。

数据类型转换

自动类型转换

自动将精度低、表示范围小的运算分量类型向精度高、表示范围大的运算分量类型转换。也称“隐式类型转换”。
char,short→int→unsigned→long→float→double

强制类型转换

(数据类型名)表达式

数据类型名(表达式)

(数据类型名)(表达式)

是对变量的数据长度进行的临时性转换。

赋值表达式的类型转换

你可能感兴趣的:(初学C++)