跳转到内容

C++/变数及资料型态

维基教科书,自由的教学读本
< C++

变数,可以想像成是一个箱子,在里面放一个数字,而我们随时可以将这个数字拿出来使用或做修改。

简介

[编辑]

变数可以储存数字、字元、布林值等等数值,但对于电脑来说,这些都是数字,因为电脑只用0与1在工作,而要把数字可以转换成0与1是很容易的:

十进制

位值

100 10 1
102 101 100
二进制

位值

4 2 1
22 21 20

将其转换成较好理解的方式就是:十进制的数字是若干的硬币,将其填入格子中,同一直排必须完全填满或完全不填,如下表所示。

12个铜板
O X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

X

O
O
O
O O
O O
O O
O O
1 1 0 0

所以1210=11002

既然数字可以转换成电流的开关储存,那就只要把其他东西转换成数字较好了,最简单的像是:布林值可以转换成0和1;字元可以用编号的方式,例如'+'是2316

使用

[编辑]

建立

[编辑]
int i;

那么多种的资料型态都可以储存,所以在宣告一个变数时需要告诉电脑它储存的是什么,这是这个语言的设定。所以当然也有一些语言是不用告诉电脑“资料型态(又称资料型别)”的,例如JavaScript:

var i;

你会发现,var是“变数”的缩写,那么int又是什么(不是感叹词)?底下将会介绍大部分资料型别,以及一些“修饰子(又称修饰词)”。

资料型别[延伸]
型别 中文 备注 大小 基本?
int 整数 -2147483648 ~ +2147483647 4 O
shortshort int 短整数 -32768 ~ +32767,修饰词(因为在int前加东西) 2 X
longlong int 长整数 通常与整数相同,看系统,修饰词(原因同上) 4 或 8 X
char 字元 -128 ~ +127ASCII字元) 1 O
bool 布林值 true(非零值) & false(零) 1 O
float 单精度浮点数 ±1038 ~ ±10-38,误差较大,建议用double 4 O
double 倍精度浮点数 ±10308 ~ ±10-308,浮点数一般用它 8 O
double double 倍倍精度浮点数 不常用又占内存空间 ??? X
string 字串 <cstring>中额外定义 ??? X
......更多 例如<windows.h>中额外定义的 ??? X
修饰词
中文 备注
const 常数 宣告时必须给予初始值,不能更改其储存之数值,可用以储存如圆周率等常数
auto 自动 只能用于{}内,无指定时预设,进入区块内才会被建立,离开区块才会释放空间
static 静态 要等所有程式执行结束才会释放空间,没设初始值预设0
extern 外部 没设初始值预设0,全域变数,在区块外使用可以省略,函数内部宣告不会实际分配内存,外面要有一个同名变数的宣告
static extern 静态外部 静态加上外部,但仅限于同意档案使用
register 暂存器 用CPU的暂存器储存,读写较快,对于频繁存取的变数是较好的选择,但因为暂存器空间有限,当其超过上限,系统会自动将它换成一般变数

初始值

[编辑]

在宣告变数时是可以指派初始值的,如下所示。

int i = 0;

读取

[编辑]

在读取时非常简单,只要打上变数名称。

int i = 0;
std::cout << i << std::endl;

// 輸出:0

写入

[编辑]

指派运算又称为赋值运算。C++大概有以下几种运算子可用。

注意其全部皆是由右至左运算,且左边必须是一变数。

指派(赋值)运算子家族
运算子 名称 功能 范例 i
int i = 100; 100
= 指派运算子 将右边运算后给予左边 i = 5 + 3; 8
+= 以和指派运算子 将右边运算后加上左边 i += 5 + 3; 16
-= 以差指派运算子 将右边运算后减去左边 i -= 5 + 3; -8
*= 以积指派运算子 将右边运算后乘以左边 i *= 5 + 3; -64
/= 以商指派运算子 将右边运算后除以左边 i /= 5 + 3; -0.125
%= 以余指派运算子 将右边运算后除以左边取余数 i %= 5 + 3;