《C++ Primer Plus》《3、数据处理》

文章目录

  • 0 前言
  • 1 简单变量
    • 1.1变量名
    • 1.2整型
    • 1.3整型short,int,long和long long
    • 1.4无符号类型
    • 1.5选择整型类型
    • 1.6整型字面值
    • 1.7C++如何确定常量的类型
    • 1.8char类型:字符和小整数
    • 1.9bool类型
  • 2 cost限定符
  • 3浮点数
    • 3.1书写浮点数
    • 3.2浮点类型
    • 3.3浮点常量
    • 3.4浮点数的优缺点
  • 4 C++算数运算符
    • 4.1运算符优先级和结合性
    • 4.2除法分支
    • 4.3求模运算符
    • 4.4类型转换
    • 4.5 auto声明
  • 5 总结
  • 6 参考

0 前言

本章依然介绍C++的基础用法,C++的变量类型有2中:基本类型和复合类型,本章主要介绍基本类型, 整数浮点数

1 简单变量

在实际生活中,我们通常要记录一个数据,比如今天的温度,饭菜的价格,比如今天室外温度23℃,变量是温度,数值是23,计算机记录多了一个操作,他要标记温度是何种类型的数值。所以对于计算机而言,关键的三个属性:信息存储在哪里,要存储声明数值,存储何种类型的信息

1.1变量名

变量的命名原则是见文知意,看到这个变量的名称,大概就会知道这个变量是表示什么样的数值。C++命名需要遵循以下规则:

  • 1)变量名称只能使用字母,数字,和下划线_;
  • 2)变量的第一个字符不能是数字;
  • 3)区分大小写;
  • 4)不能用C++关键字作为变量名;
  • 5)C++对于名称的长度没有限制,但有些平台有长度限制;
  • 6)以一个下划线打头的名称,用作全局标识符。

1.2整型

整数就是没有小数部分的数字,C++基本整型,按宽度递增为char,short,int,long和C++11新增的long,

1.3整型short,int,long和long long

对于这些数据类型在不同的平台所展现的数据位数可能不一样,但约定了最小长度;

  • 1)short至少16位;
  • 2)int至少与short一样长;
  • 3)long至少32位,且至少与int一样长;
  • 4)long long 至少64位,且至少与long一样长。

1.4无符号类型

对于非负的数字,用无符号整型可以有效地扩大表示范围,例如short表示的范围是-32768——32767,而unsigned short的表示范围是0——65535,注意:只有当数字不会变负时,才可以使用无符号类型的变量。
整型溢出:
《C++ Primer Plus》《3、数据处理》_第1张图片

1.5选择整型类型

int被设置为计算机最“自然“的长度,对于大量的数据类型操作,int处理的会最快。当然遇到一些大型整数数组时,可以考虑使用short,这样会大大缩减存储空间。

1.6整型字面值

首位是1-9,10进制
首位是0,8进制
首位是0X,0x,16进制

1.7C++如何确定常量的类型

一个普通的数字默认为int类型;首先看后缀,若是有特定的后缀,则遵从后缀的格式;否则看数据的长度,如果数据的长度超过int类型,则自动转为long类型。

1.8char类型:字符和小整数

char类型是专门为存储字符而设计的对应的是ASCII表。但是有些像中文系统等需要用到wchar_t,这是一种较大的扩展字符集,它拥有足够的空间可以表示系统使用的最大扩展字符集。

1.9bool类型

bool类型有两种:true,false,通常情况下默认1是true,0是false,实际上任何非零值,都可以表示位true。

2 cost限定符

用const限定符来表示常量,常量被初始化后,其数值就被固定了,编译器将不允许再修改该常量的数值。
创建常量名的通用格式如下:
const type name = value,应该在声明中就对变量进行初始化。

3浮点数

浮点类型是基本类型的第二大类型,浮点数能够表示带小数部分的数字。

3.1书写浮点数

有2种方法,一种是常用的标准小数点表示方法;
第二种叫作E表示方法(E表示法适合非常大或者非常小的数字)

3.2浮点类型

浮点类型有3种:float,double,long double类型,根据实际要求进行选取。

3.3浮点常量

如果希望存储为float类型,用f或者F后缀;希望为long类型,用l或者L后缀。

3.4浮点数的优缺点

优点:表示整数之间的数值;因为有缩放因子,所以可以表示的范围大得多。
缺点:运算速度比整数慢,精确度降低

4 C++算数运算符

C++中的算术运算符与C一样,主要是+,-,*,/和%(求模运算符),这些基本都在小学中有学过,下面进行具体的介绍。

4.1运算符优先级和结合性

一般情况下,为了确保不出错,都会用括号将表达式括起来,在特殊情况下可能表达式会比较复杂,*,/,%的运算优先级相同,+,-的运算优先级相同,前者的优先级高于后者。

4.2除法分支

除法运算上有一些特殊的规定。2个除数都是整数,则运算结果也是整数,会丢弃一些小数部分。但是除数与被除数只要一方是浮点型,则最终的结果便是浮点型。(在C++中,浮点型数据不做特殊说明就是double类型的数据)。

4.3求模运算符

求模运算符,是整数除法剩余的余数,这是他的运算概念,当然他的运用场景仅限于整数。
《C++ Primer Plus》《3、数据处理》_第2张图片

4.4类型转换

1)初始化和赋值进行的转化
初始化和赋值进行的转换,以short和long为例。将short的值赋值给long,通常会将short类型的变量进行拓展,而不会改变这个变量的大小。但是将long类型的数值赋值给short类型的变量,short类型的变量可能会丢失数据,会带来潜在的风险。
《C++ Primer Plus》《3、数据处理》_第3张图片

2)以{}方式初始化进行的转化
{}使用大括号的初始化称为列表初始化,这种初始化用于给复杂的数据类型提供数值列表,他对类型转换的要求更为严格,我的理解,这种转化不允许数据丢失。
3)表达式中的转化
当同一个表达式中出现两种不同的算术类型时,C++会执行两种不同的转换;首先,一些类型在出现时便会自动转化,其次有些类型在于其他类型同时出现时在表达式中会被转换掉。
a.自动转化
在C++中,会将bool,char,unsigned char,signed char和short值转化为int(计算机使用这种类型运算会最快)。
b.不同类型变量放在一起后的转化
例如int与double两种类型相加时,相加后的结果会自动转换成较大的数据类型(double)。
4)传递参数的转化
为了保持与传统C语言代码的兼容性,例如会将float参数提升为double。
5)强制类型转化
在C中就学过强制类型抓换,在C++中有三种转换方式,举一个例子,声明一个int型的变量x

a.(long) x 		     //C方式的强制类型转换
b.long (x) 		     //C++方式的强制类型转换
c.static_cast<long>(x);//C++方式的强制类型转换
运算符 static_cast<typename>(value)  //convert value to typename type;

4.5 auto声明

在初始化声明中,使用关键词auto,而不指定变量的类型,编译器便将变量的类型设置与初始值相同。

auto n = 100;      // n is int
auto x = 1.5;       //x is double
auto y = 1.3e12L;   //y is long double

5 总结

C++的基本类型大致分为两种:整型、浮点型。整型有bool,char,signed char,unsigned char,short,unsigned short,int,unsigned int,long,unsigned long以及新增的long long和unsigned long long。浮点型有float,double,long double。也介绍了运算符以及运算符的优先级,以及不同数据类型直接的转换,为下面讲复合类型打下了基础。

6 参考

《C++ Primer Plus》

你可能感兴趣的:(#,《C++,Primer,Plus》,c++)