C++入门教程(19):数据类型

小古银的官方网站(完整教程):http://www.xiaoguyin.com/
C++入门教程视频:https://www.bilibili.com/video/av20868986/


前言

经过前面的学习和练习,相信你已经更加了解计算机和C++的关系。本部分教程将详细讲解基本数据类型、一些常用的数据类型的使用和再详细讲解循环语句等基础内容。

本部分教程的目的:

  • 详细讲解之前用过的基础知识,让你在使用过程中尽量避免遇到BUG和尽可能优化代码。
  • 讲解其他非常常用的数据类型。

在学习之前,再解释几个名词:

类是可以自定义的数据类型的统称,C++标准库中有很多类,而我们也可以通过类来制定出方便自己使用的数据类型。后续教程中如果出现类的话,我将会明确指出它是类。

至于如何制定出一个类,这个将在后续教程中讲解。

对象

用类声明定义出来的变量叫做对象。

实例化

用类声明定义出对象的这个行为也叫做实例化,也可以叫做创建对象,不过本教程多数也是用声明这个词。

关键字

int等,在C++语言中有特定作用的单词。关键字是不能用作变量名称等的标识符。

编译期

编译的时候。

运行时

程序运行的时候。一些可以在编译的时候得出结果的代码,编译器一般都会尽量在编译的时候优化掉,这样编译出来的程序由于执行的代码更少,所以运行的时候会更快。


我们知道在使用变量前需要用数据类型声明出变量才能使用,前面已经讲解过非常常用的基本数据类型,现在将详细讲解基本数据类型和常用的其他数据类型。

数据类型

在声明定义变量时,必须指定数据类型,来说明变量保存的类型变量占用多大的内存

基本数据类型属于C++的核心语言,其他的数据类型都是根据这些衍生出来的。以下是基本数据类型

类型 类型简写 用途 占用内存(字节数) 取值范围
bool bool 只有两个值(例如性别) 1 false, true
unsigned char unsigned char 保存字节数据 1 [0, 255]
signed char char 保存窄字符或UTF-8字符 1 [-128, 127]
wchar_t wchar_t 保存宽字符字符 2(Windows)或 4(Linux/OS X) [-32768, 32767](Windows)或[-2147483648, 2147483647](Linux/OS X)
char16_t char16_t 保存UCS-2字符 2 [0, 65535]
char32_t char32_t 保存UCS-4字符 4 [0, 4294967295]
signed int int 保存整数 2(16位系统)或 4(32位系统) [-32768, 32767](16位系统)或[-2147483648, 2147483647](32位系统)
unsigned int unsigned int 保存非负整数 2(16位系统)或 4(32位系统) [0, 65535](16位系统)或[0, 4294967295](32位系统)
signed short int short 保存整数 2 [-32768, 32767]
unsigned short int unsigned short 保存非负整数 2 [0, 65535]
signed long int long 保存整数 4(GCC32位/VS)或 8(GCC64位) [-2147483648, 2147483647](GCC32位/VS)或 [-9223372036854775808, 9223372036854775807](GCC64位)
unsigned long int unsigned long 保存非负整数 4(GCC32位/VS)或 8(GCC64位) [0, 4294967295](GCC32位/VS)或 [0, 18446744073709551615](GCC64位)
signed long long int long long 保存整数 8 [-9223372036854775808, 9223372036854775807]
unsigned long long int unsigned long long 保存非负整数 8 [0, 18446744073709551615]
float float 保存小数 4 6位左右的有效数字
double double 保存小数 8 16位左右的有效数字
long double long double 保存小数 8(VS)或 12(GCC32位)或 16(GCC64位) 这个情况太多就不考证了,转载请注明出处“小古银的C++教程”
指针 指针 保存内存地址 2(16位系统)或 4(32位系统)或 8(64位系统) [0x0000, 0xFFFF](16位系统)或 [0x00000000, 0xFFFFFFFF](32位系统)或 [0x0000000000000000, 0xFFFFFFFFFFFFFFFF](64位系统)

其中,指针是用来保存地址的特殊数据类型。虽然指针不是基本数据类型,但也是很常用的类型,所以也放到这部分一起讲解。

注意:

  • 以上基本数据类型的占用大小是一般情况下,事实上,根据编译器的不同,基本数据类型的占用大小也不一定都是固定的。
  • 使用基本数据类型的时候,一般使用简写。
  • 保存整数时,由于没有比unsigned long long更大的基本数据类型,所以如果你要保存的数字大于unsigned long long可以保存的最大值,你需要另外想办法解决。

其他常用的数据类型:

  • std::stringstd::wstringstd::u16stringstd::u32string用于保存字符串,这些类型在string库中。
  • std::size_t用于保存长度,这个类型在cstddef库中。

类型后缀

0默认是int类型。但是有不少的时候,如果我们想这个0unsigned int类型。那么,这种情况就可以使用类型后缀,说明这个字面量是指定类型的。例如:unsigned int zero = 0u;unsigned long long two = 2ull;

类型后缀有以下这些:

类型 后缀
bool 无后缀
unsigned char 无后缀
char/wchar_t/char16_t/char32_t 无后缀
int 无后缀
short 无后缀
long l 或 L
unsigned int u 或 U
unsigned short 无后缀
unsigned long ul 或 UL
long long ll 或 LL
unsigned long long ull 或 ULL
float f 或 F
double 无后缀
long double l 或 L

拓展知识

固定大小的数据类型(了解即可)

如果需要固定数据占用大小,则需要使用以下数据类型,这些数据类型都在cstdint库中:

  • 固定8位长度:int8_tuint8_t
  • 固定16位长度:int16_tuint16_t
  • 固定32位长度:int32_tuint32_t
  • 固定64位长度:int64_tuint64_t

注意:只有当编译器支持这些类型的时候,这些类型才会被定义;当你使用了这些类型但是编译器不支持,编译的时候将会报错。

补充知识(了解即可)

  1. 基本数据类型中,char16_tchar32_tunsigned long longlong long是C++11增加的。
  2. 后缀ull/ULL是C++11增加的。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 160,108评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,699评论 1 296
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,812评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,236评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,583评论 3 288
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,739评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,957评论 2 315
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,704评论 0 204
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,447评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,643评论 2 249
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,133评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,486评论 3 256
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,151评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,108评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,889评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,782评论 2 277
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,681评论 2 272

推荐阅读更多精彩内容