第2章 变量和基本类型

2015-10-08 20:18:32

注:  之前解除过C++比较少,只学过C语言。

-----------------------------------------------------------

  • 内置类型是编程语言自己定义的一些类型,不需要我们自己定义了。 比如bool、int;

空类型Void  不对应具体的值,仅用于特殊的场合,例如最常见的是,当函数不反悔任何值时使用空类型作为返回值。

  • 使用浮点数时,选用double---因为float的精度不够,且计算的时候,双精度和单精度的代价相差无几。
  • 当我们赋给无符号类型一个超出它表示范围的值时,结果是初始值对无符号类型表示只取模后的余数。
  • 当赋给带符号类型一个超过它的表示范围的值时,结果是未定义的。  可能产生崩溃,继续工作,垃圾数据等。

比如

unsigned char c=1  // 假设char占8比特,c的值为255

signed char c2=256//  假设char占8比特,c2的值未定义

 

自面值常量  一个形如42的值被称为自面值常量(literal)。  自面值常量的形式和值取决于它的数据类型。  nullptr是指针字面值。

  • 由单引号括起来的一个字符称为char型字面值。 双引号括起来的零个或多个字符是字符串型字面值。 区别:多一个\n。

    两类字符不能直接使用: 1. 不可打印字符 如退格或其他控制字符  2. 特殊含义字符(单引号、双引号、问好、反斜线),在此情况下

            需要用到转义字符(以反斜线开始,如\t)

在C++ 11新标准中,用花括号来初始化变量得到了全面的应用。

但注意的是:如果我们使用里边初始化且初始值存在丢失信息的风险的时候,编译器可能报错。

1 long double ld=3.1418926536;
2 int  a{ld},b={ld};   //可能丢失数据的风险
3 int  c(ld),d=ld;      //正确
  •     标识符  -----坚持书写用户自定义的表示标识符中,不能连续出现两个下划线,也不能以下划线紧连大写字母开头。
  • 标识符 要能体现实际含义;
  • 变量名一般用小写字母,比如index而不是INDEX;
  • 用户自定义的类一般以大写字母开头,比如: Sales_item;
  • 如果标识符 又多个单词表示,则单词之间应有明显的区别,如student_loan不要写成studentloan。

---------------------------------------------------------------------------------------------------

复合类型    

包括引用和指针。

引用(reference)---为对象起了另外一个名字。 引用时,必须初始化。

一般在初始化变量时,初始值会被拷贝到新建的对象中。然而定义引用时,程序把引用和它的初始值绑定(bind)而不是将初始值拷贝给引用。 一旦初始化完成,

引用和它的初始对象绑定在一起。 因为无法令引用重新绑定到另外一个对象;因此引用必须初始化。

注: 引用只能绑定在对象上而不能绑定在字面值或某个表达式的计算结果绑定在一起。

指针  指针即是地址;指针变量----专门存放变量(或其他程序实体)地址的变量。

例如让变量p存放整型变量a的地址,这样就可以通过变量p就可以找到a变量的值。变量p的就是指针变量----存放的地址就成为指针。

空指针(nill pointer)

 int *p = NULL     //代表定义一个指向整型变量的指针p,然后p的值设为NULL,也就是设为0;用另一种方式说,就是对一个刚定义的指向整型变量的指针,赋初始值,让其指向0地址。
 1 #define NULL 0  //注意NULL就是NULL,它被宏定义为0;
 2
 3  int *p = NULL  // 代表定义一个指向整型变量的指针p,然后p的值设为NULL,也就是设为0;用另一种方式说,就是对一个刚定义的指向整型变量的指针,赋初始值,让其指向0地址。
 4
 5 *p = NULL //代表对一个由指针p指向的变量(什么类型,不知道),赋值为0,是将那个变量赋值为0。
 6
 7
 8
 9 我们可以先看下面的代码:
10
11
12    int *p = NULL;    //这时候我们可以通过编译器查看p的值为0x00000000。
13
14 这句代码的意思是:定义一个指针变量p,其指向的内存里面保存的是int类型的数据;在定义变量p的同时把p的值设置为0x00000000,而不是把*p的值设置为0x00000000。这个过程叫做初始化,是在编译的时候进行的。就好比我们定义了一个int型的变量,但是没有赋初值,那么编译器会自动赋初值为0,同理对于指针,就赋初值为0地址。

 

预处理变量(preprocessor variable),预处理变量不属于命名空间std,他有预处理器负责管理,因此我们可以直接使用预处理变量而无须在前面加上std:。

常量表达式(const expression)是指值不会改变,并且在编译过程就能得到计算结果的表达式。

  • 一个对象(或表达式)是不是常量表达式由它的数据类型和初始值决定。
  • C++ 11新标准规定,允许将变量声明为constexper类型,以便由编译器来验证变量的表达式是否是一个常量。

字面值类型(literal type )  一般比较简单,值也显而易见、容易得到。 比如:算术类型、引用和指针。

------------------------------------------------

2.5 处理类型

类型别名(type alias),两种方法

1 typedef double wages;
2
3
4 using SI=Sales_item;  // 别名声明,很显然没有分配地址

decltype  希望从表达式的类型推断出要定义的变量类型,但不想用该表达式的值初始化,其作用是选择并返回操作数的数据类型。

decltype ((variable));   //双括号永远是一个引用

int i=42;
decltype (i) e; //正确: e是一个(未初始化)的int
decltype ((i)) d; //错误: d是引用,必须初始化。

预处理概述: 却白头文件多次包含仍能安全工作的常用技术。

1 这二者主要用于防止重复包含。我们一般在.h头文件前面加上这么一段:
2
3 //头文件防止重复包含uncA.h
4
5 #ifndef FUNCA_H
6
7 #define FUNCA_H  //头文件内容
8
9 #end if
时间: 2024-10-01 01:32:38

第2章 变量和基本类型的相关文章

C++ Primer学习总结 第1-2章 变量和基本类型

第1-2章 变量和基本类型 1.下面这个语句在C++98和C++11中的输出结果不同. C++98结果: (如果想要更高的精度,可以用%.9lf,输出9位有效数字) C++11结果: 结论: printf的%lf在C++11中表示longdouble,所以用中%f就可以输出float和double类型.而printf在C++98中可以用%lf正确输出double. 如果是scanf的话,不论C++98还是C++11中float都用%f读取,double都用%lf读取,因为二者结构不同.   2.

C++ Primer 笔记(2)第二章 变量与基本类型

第二章 变量与基本类型 1.基本内置类型包括算术类型和空类型,算术类型分为两类:整型(包括字符和布尔类型)和浮点型: 2.布尔类型(bool)的取值是真(true)或者假(false): 3.字面值常量:每个字面值常量都对应一种数据类型,字面值常量的形式和值决定了它的数据类型, 由单引号括起来的一个字符是char型字面值,有双引号括起来的零个或者多个字符则构成字符串字面值: 20  整形字面值 ‘a’ 字符字面值 “Hello World”或者“”都会字符串字面值 ‘A’表示单独字符A,而“A”

<<C++ Primer>> 第 2 章 变量和基本类型 术语表

术语表 第 2 章 变量和基本类型 地址(address): 是一个数字,根据它可以找到内存中的一个字节 ?? 别名生命(alias declaration): 为另一种类型定义一个同义词:使用 "名字 = 类型" 的格式将名字作为该类型的同义词. ?? 算术类型(arithmetic type): 布尔值,字符,整数,浮点数等内置类型. ?? 数组(array): 是一种数据结果,存放着一组未命名的对象,可以通过索引来访问这些对象. ?? auto: 是一种类型说明符,通过变量的初始

第二章 变量和基本类型(2)

2.1 基本内置类型(略过,没什么可写的,都是一些基本的东西) 2.2 字面值常量 5.字符串字面值 1.之前的字面值都是基本的内置类型 2.字符串字面值,是用双引号括起来的0个和多个字符表示,""或者"hello word" 3.为了兼容C语言,C++中所有的字符串字面值都有编译器g++自动在末尾添加一个空字符. 4.字符字面值'A',表示的是单个字符A 5.字符串字面值"A",表示的是字母A和空字符,2个字符的字符串 2.3 变量 关键概念:

第2章 变量和基本类型 附2 --声明和定义的区别

变量声明和定义的区别 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点对你受益) 变量的声明有两种情况: 1.一种是需要建立存储空间的.例如:int a 在声明的时候就已经建立了存储空间.----定义 2.另一种是不需要建立存储空间的. 例如:extern int a 其中变量a是在别的文件中定义的.-----声明 前者是“定义性声明(defining declara

第2章 变量和基本类型 附1---变量和对象的区别

在C++ primer里讲到:    对象(object)是一块能存储数据并具有某种类型的内存空间. 已命名的对象-----称为变量(variable). ------------------------------------------------------------------------------------------------------- 对象和变量这两个概念莫要搞乱,颈是颈,椎是椎,虽然两者都对应着一块内存,但是从不同的角度去理解内存就会产生不同的意义. 变量:所谓变量就

[C++ primer]第2章 变量和基本类型

*谨做个人笔记,本系列不建议初学者以系统性学习为目的的使用 C++ 11: 定义了数据类型long long, 至少和一个long一样大,对32位机器而言,一般是64位 即8字节 算术类型 字符型不同于其他基本类型,被分成三种,char,signed char以及unsigned char 但是表现形式只有两种:带符号或者无符号的.类型char会变现为两种之一,具体哪种取决与编译器 所以在算术表达式中不建议使用char,因为不同编译器的结果不同 类型转换 浮点赋整型,只保留整数部分,不是四舍五入

C++primer第二章 变量和基本类型

类型是程序的基础.类型告诉我们数据代表什么意思以及可以对数据执行那些操作. C++语言定义的几种类型: 字符型 整型 浮点型 还支持自定义数据类型 数据类型确定了数据和操作在程序中的意义 i=i+j; int:5=2+3: string:hello world = hello + world: 2.1.基本内置类型 计算:整型或者浮点型 用来存储数值 语句说明:字符串或者string类型 存储语句 判断条件:bool类型 存储真值 2.1.2. 整型 整数.字符和布尔值的算术类型合成为整型.与浮

第二章 变量和基本类型(4)

2.5 引用 前言 引用就是变量的另一个名字 在实际的程序中,引用主要是作为函数的形式参数 引用是一种复合的数据类型,通过在变量的名字前面添加“&”符号来定义. 复合类型指的是用其他类型定义的类型,int &ref = i;用其他类型int变量i,定义类型 ref 1.引用是别名 因为引用是它绑定变量的另一个名字, 作用在引用上的所有的操作,实际上都是作用在该引用班定的变量上. 定义多个引用 略 const引用 const引用,是指向const变量的引用 const int ival =