C++/变数及资料型态
< C++
变数,可以想像成是一个箱子,在里面放一个数字,而我们随时可以将这个数字拿出来使用或做修改。
简介
编辑变数可以储存数字、字元、布林值等等数值,但对于电脑来说,这些都是数字,因为电脑只用0与1在工作,而要把数字可以转换成0与1是很容易的:
十进制
位值 |
100 | 10 | 1 |
102 | 101 | 100 | |
二进制
位值 |
4 | 2 | 1 |
22 | 21 | 20 |
将其转换成较好理解的方式就是:十进制的数字是若干的硬币,将其填入格子中,同一直排必须完全填满或完全不填,如下表所示。
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 |
short 或 short int
|
短整数 | -32768 ~ +32767 ,修饰词(因为在int 前加东西)
|
2 | X |
long 或 long int
|
长整数 | 通常与整数相同,看系统,修饰词(原因同上) | 4 或 8 | X |
char
|
字元 | -128 ~ +127 (ASCII字元)
|
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;
|