今天起两天,会介绍一下在C++里面,每一个变数的叫法规则,他们在电脑里面是怎麽样储存的。
经过了两天的训练,应该二进位不陌生吧!这些变数就是用二进位等等的方式储存的,但每个变数又不太一样啦,下面就来一一介绍。
在介绍变数的型态之前,我们可以先了解一下在C++中的基本资料型态(Basic data types)。
首先
第一种是: literal 它是一种被写死的质 (例如之後会稍微讲一下的 constant (常数) )
第二种是: variable 就是一个可以变动的质 (像是下面会提到的变数)
之前有稍微提到过,变数到底有那些东西,那我们一样搬来那个表格:
【C++中有那些变数呢?- 整数部分】
Name | bytes |
---|---|
bool | 1 |
char | 1 |
int | 4 |
short | 2 |
long | 4 |
unsigned int | 4 |
unsigned short | 2 |
unsigned long | 4 |
我在第四天的时候有说过,宣告变数,就像是要跟一间餐厅订位一样,你需要先跟餐厅说你要预订多少位置,餐厅才可以预留多少位置给你。
宣告这些变数的时候,就是在宣告这些位置,而後面那个bytes 就指的是你宣告的变数需要多少个位置。
一个 byte 会等於 八个bit
所以,拿 int 来举例,他占有 4 个bytes,也就是说他的bit会来到 32 bit 这麽多!
那一个bit 又是甚麽呢?
还记得上次我们谈到的2进位吗,它的其中一个数字就是一个 bit 啦!
例如: 0010 0010 其中每一个0还有1就是一个 bit!
那我们来详细一点的介绍一下这些整数的变数吧!
为integer, 整数的缩写
占据 4 个 bytes = 32 bits
因为占据了共 32 个 bits,所以它可以储存的资料大小可以从 (-2^31) ~ (+2^31) - 1
可以想像成像上图一样的图形。
在这边就可以顺便介绍其他的整数:
unsigned int :
它也占据了 4 个 bytes,但是它储存的资料只有从0 ~ (2^32) - 1(也就是只有正数)
short :
它占据了 2 个 bytes,所以它储存的资料只有 int 的一半(-2^15 ~ + 2^15 - 1) (总共只有 16 bits)
long :
它跟 int 占据了一模一样的空间,(在32位元的编译器中),因此可以储存的范围跟 int 一样
在你很怀疑一个变数是多大的时候,你可以使用这个函式来确认它真正的大小。
要怎麽用?
#include<iostream>
using namespace std;
int main(){
cout << "int" << sizeof(int) << endl;
cout << "unsigned int" << sizeof(unsigned int) << endl;
cout << "short" << sizeof(short) << endl;
cout << "long" << sizeof(long) << endl;
return 0;
}
就会得到:
所以如果有疑惑就去做看看吧!
这边这个函式库,则可以查到一个变数的上下界
例如:
#include<iostream>
#include<climits>
using namespace std;
int main(){
cout << INT_MIN << ", " << INT_MAX << endl;
cout << endl;
cout << SHRT_MIN << ", " << SHRT_MAX << endl; //SHRT 是 short的简称
cout << endl;
cout << LONG_MIN << ", " << LONG_MAX << endl;
return 0;
}
可以得到 :
这个词好像常被人提起,但是好像又不太知道甚麽意思吧!
我们直接丢个例子:
#include<iostream>
using namespace std;
int main(){
short numberA = 32765; // 32765 = 2^15 - 3;
int i = 0;
while (i < 10)
{
short numberB = numberA + i;
cout << numberA + i << " " << numberB << endl;
i++;
}
}
这时候,你会发现怎麽两边的数字怪怪的,明明numberA 跟 numberB 好像是长的一模一样的东西,但是印出来的东西又是另外一个回事。
我们可以先关注是从哪里开始改变的:
numberB 从 32767 + 1 後,变成了- 32768
疑,阿怎麽越加越小咧?
其实是因为这样:
在整数中,最前面那个bit 是专门在处理正负号的,而short又只有 16 个 bits,所以当每个bit都塞满的时候,再加 1 就会满出来,变成负号了!
进位还有电脑里面运作真的有点复杂,但都是必须要搞懂的小东西。
ps 妈妈真的不懂梗图 & memes 在干嘛。
1.https://read01.com/zh-tw/JDNzj6.html
实体 所谓实体即为描述我们真实世界的物件,如员工、客户、订单皆属於实体。 在实务上的需求我们可以将实...
在这个人手一机的时代,没接触过网路的人应该不多吧,不管是购物、查资料、追剧都会用到网路,但这个每天都...
什麽是互动?简单说希望能够让使用者允许监听和分派事件,用比较白话的一点方式举例就是当我们滑鼠按下某个...
什麽是网站推播通知 推播通知不管对 App 或是网站来说都是一种重新吸引用户来使用 App 的方法,...
今天要主要会介绍几个 widget 的共通方法,後面的部分会介绍如何在介面上加上图片还有其他几个实用...