CPP_5_关于变量和作用域

张一极

2019.09.06

CPP_6_变量

类型

含义

最小存储空间

    

bool

    

boolean

NA

char

character

8 bits

wchar_t wide character

    

16 bits

short short integer

    

16 bits

int integer

    

16 bits

long long integer

    

32 bits

float single-precision floating-point

    

6 significant digits

double double-precision floating-point

    

10 significant digits

    

long double ,extended-precision floating-point

10 significant digi

c++的内置类型如上表:

整型:

小小改观 : 整数和字符还有布尔类型的算术类型,都是整型,而不只有整数,比较常见的字符类型是charwchar—tchar保证了长度不受干涉,有足够空间,wchar-t有兴趣的可以去了解,通常可以表示其余的字符如汉字等。

细节:

shortintlong类型都可以表示整数,储存空间大小不一而已,short一般为半个机器字节,int是他的两倍也就是一个机器字节,long又是int的两倍,两个机器字节(书中还提到了32位机器intlong的字节数目有趣的一致。)

布尔类型代表真和假,非零为真,0为假,除了他以外,整型也可以是无符号或者带符号的,有符号的整型可以表示正数也可以表示负数,无符号只能表示正数也就是大于等于0的数。

和其他整型不同,char 有三种不同的类型:plain char unsigned char signed char。虽然 char 有三种不同的类型,但只有两种表示方式。可以使用 unsigned char signed char 表示 char 类型。使用哪种 char 表示方式由 编译器而定。

整型值的表示

无符号型中,所有的位都表示数值。如果在某种机器中,定义一种类型使用 8 位表示,那么这种类型的 unsigned 型可以取值 0 255

C++ 标准并未定义 signed 类型如何用位来表示,而是由每个编译器自由决 定如何表示 signed 类型。这些表示方式会影响 signed 类型的取值范围。8 signed 类型的取值肯定至少是从 -127 127,但也有许多实现允许取值从 -128 127

表示 signed 整型类型最常见的策略是用其中一个位作为符号位。符号位为 1,值就为负数;符号位为 0,值就为 0 或正数。一个 signed 整型取值是从 -128 127

(引自c++ primer

作用域就是一个变量的有效区间,创建到销毁,一个完整的周期,从他的定义点开始到最近的一对括号确定.
以下代码就会出现错误,原因就是超出了m的有效区域

#include
using namespace std;
void l(int &m){
m = 2;
cout<<m<<endl;
}
int main(){
int l_ = 1;
int* p = &l_;
l(*p);
cout<<m<<endl;
}

上述代码的问题,就是在函数空间以外,使用了m这个变量:

➜ code g++ l.cpp -o l
l.cpp:11:11: error: use of undeclared identifier ‘m’
cout<<m<<endl;
^
1 error generated.
➜ code

而需要注意的是,变量的区域是可以嵌套的,遵循由外到里的原则,外面的变量里面的括号内也能用,最里面括号的变量只有最里面能用.

在变量的定义方便 , 在c语言中,要求程序作者一开始就定义好所有需要的变量,但是在开发过程中,往往会遇到很多不知道会用到的变量,不得不返回程序开头去定义,c语言首先看到的是变量定义的代码,只能这么做,很不方便,虽然他方便了编译器创建一个块的时候创建这些变量更好地分配大小.

c++有所不同,它允许在任意地方定义变量,可以在使用它之前定义,也可以像c一样在程序开头定义,使得程序更容易被读懂,python也是一个随时定义变量的语言:

#include
using namespace std;
void l(int m){
m = 2;
cout&lt;&lt;m&lt;&lt;endl;
}
int main(){
int l_ = 1;
l(l_);
int l__ = 10;
l(l__);
}

以上是一个简单的随时变量表示代码,函数调用前使用它,下面是也是一个简单的示例,读者务必自己尝试去实验:

 

此条目发表在ALL, CPP分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注