《C++ Primer 第六版》第三章

C艹的变量名的几种简单的规则

1.     在名称中只能使用字母字符、数字和下划线

2.     名称的第一个字符不能是数字

3.     区分大写字符与小写字符

4.     不能将C艹关键字用作名称

5.     一两个下划线或下划线和大写字母打头的名称被保留给实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符

6.     C艹对于名称的长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制

 

C艹中的整型

Char、short、int、long、long long其中每种类型都有符号版本和无符号版本,总共有10种类型可供选择。Char类型有一些特殊属性,最常用来表示字符,而不是数字。

 

C艹提供了一种灵活的标准,确保了最小长度(从C语言借鉴而来),不同系统的宽度并不一样,要视系统而定

1.     Short至少16位

2.     Int至少与short一样长

3.     Long至少32位,且至少与int一样长

4.     Long long至少64位,且至少与Long一样长

 

字节byte通常指的是8位的内存单元,但是在C艹中对于字节的定义与此不同。字节可能取值的数目必须等于或超过字符数目。例如在ASCII和EBCDIC字符集中,它们都可以用8位来容纳,所以在这两种字符集系统中,C艹字节通常包含8位,然而,在Unicode中,有些实现可能使用16或者32位的字节,有些人使用术语八位组octct表示8位字节

 

 

Sizeof是一个运算符,对类型名如Int使用sizeof运算符时,应将名称放在括号内;但对变量名使用该运算符时,括号是可选的

 

C艹初始化的特殊方式:

首先是“=”不是必须的

其次{}内可以不包含任何东西,变量初始化为0

可以更好地防范类型转换错误

Int hamburgers = {24};

Int hamburgers{};

 

 

选择整型类型,通常int被设置为对目标计算机而言最为自然的长度。自然长度指的是计算机处理起来效率最高的长度。如果没有非常有说服力的理由来选择其他类型,则应用int。

 

三种进制系统:10 8 16,三种表示方式虽然不同,但是都是为了表示方便,最终都会转换成二进制存储在计算机中

 

int chest = 42;   //decimal integer literal

 

int waist = 0x42; //hexadecimal integer literal

int inseam=042;       //octal integer literal

Cout<<hex;

Cout<<oct;

 

在C++中,对于常量类型的变量会有几种后缀

L ul

Ull ll ULL Ull

U u

 

char类型

专为存储字符(如字母和数字)而设计的。它足够长,能够表示目标计算机系统中的所有基本符号-所有的字母、数字、标点符号等。实际上,很多系统支持的字符都不超过128个,因此用一个字节就可以表示所有的符号。因此,虽然char最常用来处理字符,但也可以将它用作比short更小的整型。

 

 

 

Cout.put()函数 -用来显示一个字符

句点被称为成员运算符

 

通用字符名

说的是一些小语种一些独特的字符,在ISO 10646编码中会有特定的字符码,用\u进行转义

 

Char在C艹中默认情况下是既没有符号也不是有符号。是否有符号由C++实现决定,这样编译器开发人员可以最大限地将这种类型与硬件属性匹配起来

Unsigned char通常表示范围为0-255 而signed char 表示范围为-128到127

 

Wchar_t

 

在日文汉字系统中 程序需要处理的字符集可能无法用一个8位的字节表示。 因此编译器厂商可以将char定义为一个16位的字节或更长的字节,其次,一种实现可以同时支持一个小型字符集和较大的扩展字符集。8位的char表示基本字符集,wchar_t表示扩展字符集。Wchar_t是一种整数类型,它有足够的空间。这种类型与另一种整型(underlying)的长度和符号属性相同。对底层类型的选择取决于实现,因此在一个系统中,他可能是unsigned short,而在另一个系统中,则可能是Int。

Cin与cout输入输出看作是char流,不适用与处理wchar_t,需要用wcin,wcout。另外可以通过加上前缀L来指示宽字符常量和宽字符串。

 

C艹11新增 char16_t char32_t均为无符号整型,另外

Char16_t = u’p’;

Char32_t = U”china”在2010上并不能实现,必须在15版本的才能实现

 

关于Bool类型,任何数字值或指针值都可以被隐式转换为bool值,任何非零值都转换为true,而零被转换为false

 

Const 限定符,应在生命中对const进行初始化

Const比#define好的几个点

1.     能够明确指定类型

2.     可以使用C艹的作用域规则将定义的限制在特定的函数或文件中

3.     可以将const用于更复杂的类型

 

浮点数在计算机中的存储

浮点数被分为两部分存储,一部分表示值,另一部分用于对值进行放大或缩小。

缩放因子的作用是移动小数点的位置,术语浮点因此而得名。不过C艹内部的浮点是基于二进制数,因此缩放因子是2的幂,不是10的幂

 

在用e指数的表示法时数字中不能有空格 如7.2 E6是不合法的

 

3中浮点类型 float  double long double

有效位的概念

Float至少32位有效位

Double至少48位有效位,且不少于float

Long double至少和double一样多

这三种类型的有效位数可以一样多。

指数范围至少是-37到37

 

 

Floatnum.cpp

通常cout会删除结尾的零,调用cout.setf()将覆盖这种行为,至少在新的实现中是这样

 

Fltadd.cpp

在这个编译器中float类型能表示数字中的前6位或前7位,在修改超出这个范围的值时显得毫无意义。因此会得出0的结果,实际上为1.

 

 

整型和浮点型统称为算数类型。

 

Arith.cpp

对于float,C艹只保证6位有效数位,精度的概念是一个雷区。

 

通常情况下,浮点型的常量在C艹中被认为是double型的

 

 

 

VS2015貌似对这种转换直接给X掉了并不能够通过编译。

 

const int code = 66;

    int x = 66;

    char c1 = { 31325 };      //narrowing, notallowed

    char c2 = { 66 };              //allowedbeacuse char can hold 66

    char c3 = { code };            // ditto

    char c4 = { x };               //notallowed, x is not constant

    x = 31235;

    char c5 = x;                   //allowedby this form of initialization

 

c5最后会被初始化为3’\x’

 

在同一个表达式中包含两种不同的算数类型时,C艹将执行两种自动转换:首先,一些类型在出现时便会自动转换:其次,有些类型在与其他类型同时出现在表达式中时将被转换。

    在计算表达式时,C艹将bool、char、unsigned char、signed char 和short值转换为int。具体地说,true被转换为1,false被转换为0.这些转换被称为整型提升(integral promotion)

 

(long)thorn C式         两种不同的强转方式

Long(thorn)  C艹式

 

强制转换运算符 static_cast<>  15章介绍

 

 

 

C艹11中新增的AUTO声明。但是并不合适普通的类型如

Auto x = 0.0                //x is double

Double y = 0;              // y is double

Auto z = 0;                  //z is int, because 0 is int

处理复杂类型,如标准模板库STL中的类型时,自动类型推断有时才能显现出来。例如

 

Std::vector<double> scores;

Std::vector<double>::iterator pv =scores.begin();

C艹11允许您将其重写为下面这样:

Std::vector<double> scores;

Auto pv = scores.begin();

我觉得这段挺重要的,有些基础的概念,你不看真的不知道是如何实现的。

 

A++ ++a

A++:      先用a后再操作a

++a:       先对a操作后再用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值