第二章-变量和基本类型1

第二章 变量和基本类型

关于C++的几篇博客,参考人民邮电出版社的《C++ Primer 中文版》一书。

2.1 基本内置类型 && 2.2 字面值常量

c++的基本内置类型包括:void类型、布尔值、单个字符、整型、浮点型(5种)。

其中:

void通常作为无返回值的函数的返回值类型。

布尔值bool,可以为其赋任何值,0即false,非0即true。

单个字符即c语言中的字符常量,unsigned char范围为0~255。

整型:默认为signed,如果想定义无符号的需要加上unsigned。表示signed整型最常见的策略是第一位为符号位,1表示负数,0表示正数。如果越界,则赋值时是取该值对该类型取值数目求模后的值。例如,如果将336赋值给unsigned char型,则实际上赋值为80。

浮点型:单精度float,双精度double,扩展精度long double。


字面值常量的几个规则:

1、20 //十进制decimal;024 //八进制octal;0x14 //十六进制hexadecimal (注意:八进制和十六进制开头的是数字0,不是字母o)

2、unsigned long型常量可表示为128UL或128LU

3、默认的整数常量为int或long型,默认的浮点数常量为double类型。

4、浮点字面值常量,默认为double,在后面加F或f表示单精度float,加上L表示扩展精度long double型。科学计数法表示浮点常量时,指数用E或e表示。举例:1E-3F,12.345L。

5、字符型常量用单引号。字符串型常量用双引号,并在末位增加一个空字符 '\0'。字符或字符串常量前面加L,能得到相应的wchar_t类型的宽字符或宽字符串。

6、不可打印字符和特殊字符都用转义字符书写。前者包括退格和空格等,后者包括单引号、双引号、反斜杠等。

7、两个相邻的仅由空格、制表符或换行符分开的字符串字面值,可自动连接成一个新字符串字面值。

2.3 变量

关于变量,我们必须回答这样几个问题:

什么是变量?变量的定义?变量的声明?定义和声明的区别?如何初始化?变量的作用域?

一、什么是变量?

变量,就相当于是为程序可以操作的一段存储区,起了个名字。对象,广义上泛指内存中一切具有类型的区域。

变量的类型,决定了分配给变量的存储空间的大小,以及可以在其上执行的操作。

二、变量的初始化和定义

关于初始化,需要建立以下几个概念:

1、初始化不是赋值,是两种不同的操作。这点比较微妙,暂时不做解释。

2、C++有两种初始化形式:复制初始化,如 int i=1000;直接初始化,如 int i(1000)。

对于内置类型,两种方式几乎无差别;对于class类型的对象,有些初始化只能用直接初始化完成。

3、默认的初始化

(1)对于内置类型

全局变量或静态变量,默认初始化为0或者NULL,也就是会自动做初始化。局部变量,如果不做显示的初始化,就是未定义的,默认值是无意义的,这样做是危险的。

(2)对于class类型

如果没做显示初始化,那么会使用默认构造函数进行对象的初始化。显示的初始化调用的是构造函数。

例:

std::string all_lines(10, '9');  // all_lines = "9999999999",调用了string类的一种已定义的构造函数。

std::string empty;   // empty = " ",调用了string类的默认构造函数,该默认构造函数的作用是将empty默认初始化为空字符串。

三、变量的声明和定义的区别

1、定义,为变量分配存储空间;声明,只是告诉程序变量的类型和名字,说明其定义在其他地方,且存储空间已在其定义处分配好。广义上说,定义也是声明。

2、因为定义即分配存储空间,所以在一个程序中,相同含义的变量的定义只能出现一次,而声明可以出现多次。

3、使用变量前,必须先对变量进行定义或声明。任何在多个文件中使用的变量,声明和定义都必须是分离的。即,一个文件含有变量的定义,在其他文件中使用该变量时,需要先声明(而不是定义),再使用。

四、变量的作用域

变量的作用域,即变量的可见程序段或文件,一般是用大括号来界定的。

外部的变量,可以在内部作用域中被操作,也可以被重新定义。在内部重新定义的变量,将覆盖外部变量,且其作用域只限于内部。当内部作用域结束时,内部变量的存储区被释放,外部变量重新起作用,且其值仍然等于进入内部作用域之前的值。这是因为程序调用的主体永远是以存储块为单位的,并不是名字本身。(当然,我们一般不这样做,即内部作用域的变量名与外部起得一样,以免造成混淆。)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值