认识C++的变量与整型

面向对象编程(OOP)的本质就是设计并拓展数据类型的过程。设计自己的数据类型目的是为了让数据得到匹配,如果开发者可以顺利做到这一点,就不难发现以后使用数据就会容易得多。然而,在创建自己数据类型的前提是必须了解并掌握C++中内置的数据类型,它们是创建自己数据类型的基础条件。

内置的数据类型分两组:基本类型和复合类型。本章知识点主要介绍基本数据类型,即整数和浮点数。似乎只有两种数据类型,但C++知道,没有任何一种整型或浮点型可以满足所有的编程需求,因此它对这两种数据类型作了升级变形,后面会向大家介绍数组、字符串、指针和结构。

简单的变量

程序在运行的过程中往往都要存储数据,譬如王者荣耀需要存储英雄的战绩、伤害值等。为了将数据存储在计算机中,程序必须记录三个基本属性:

  • 信息存储在哪里
  • 需要存储什么值
  • 存储什么类型的信息
int harm;
harm = 900

例如上面的语句是在告诉程序,它正在存储一个整数,并使用名称harm来表示该整数的值。计算机内部实际上是找到一块能够存储整数的内存,将该内存单元标记为harm,并将900复制到该内存单元中;然后在使用程序时便可以使用harm来访问这个内存单元。

不过程序是不会告诉用户,它具体存在哪个单元中,实际上可以使用&运算符来检索(查找)harm的内存地址,在后面会向大家介绍指针知识时会讲到。

变量名

在定义变量名时建议大家使用有一定含义的变量名。例如,你要定义一件商品的价格可以使用变量名price,而不是用x或者ab等。

下面来说一下起变量名时需要注意的事项:

  • 只能使用数字、字母和下划线
  • 变量中第一个字符不能是数字
  • 变量名区分大小写
  • 不能将C++中的关键字用作名称,如coutcin
  • 以两个下划线或者下划线和大写字母打头的名称被保留给编译器和其要使用的资源使用。这句话可能有点绕,意思是这样命名也没有错,但是会导致编译器的行为具有不确定性,一般也不允许用户这样命名。
  • C++一般对变量名的长度没有限制,只是有些平台会对此限制。

另外,如果你想要表达的变量需要由几个单词组合而成,那么建议使用下划线进行拼接。例如,我现在要表达苹果价格,我会这样命名:apple_price

整型

整型其实非常好理解,它代表的是没有小数部分的数字,如0,-5,98,1000,-2025等。现在思考一个问题,计算机能够存储所有的整数吗?

答案是显而易见的,当然是不能!

往往来说为了存储较大的数字,那么计算机中就得用较大的内存来存储。C++提供了好几种整型的类型,为的就是不要浪费过多的内存。

C++中提供了char、short、int、long和C++11中新增了long long,每个版本都提供了有符号和无符号的版本。所谓有无符号的意思是,有符号的类型则可以表示正负数;而无符号则表示不能存储负数。

整型short、int、long和long long

计算机内存由位(bit)的单元组成,不同长度的整型也会由不同数目的位来存储值,最多能表示4种不同的整数宽度。例如

  • short至少16位
  • int至少和short一样长
  • long至少32位,且至少和int一样长
  • long long至少64位,且至少与long一样长

计算机内存的基本单位是位(bit)。可以将位看作是电子开关,0代表关,1代表开。8位的内存可以设置出256种不同的组合,每一位都有两种设置。所以8位的总组合数为2×2×2×2×2×2×2×2=256。因此8个单元可以表示0-255或者是-128到127。每多一位那么组合数则会加倍。

字节(byte)通常指的是8位的内存单元,从这个意义上说,字节是计算机内存的度量单位。1KB=1024字节、1MB=1024KB

如果想要知道你的系统中的整数最大可以支持的长度,可以使用c++中的工具sizeof实现,以int类型为例,在不同的系统中它所表示的位数可能不同,可能是16位也可能是32位。

另外,除了iostream这个头文件外,还需要添加一个新的头文件climits,这个头文件中包含了整型限制的信息。具体来说,是它定义了表示各种限制的符号名称。例如:INT_MAXint最大值,CHAR_BIT为字节位数。

limit.cpp

#include <iostream>
#include <climits>


int main()
{
    using namespace std;
    int n_int = INT_MAX;
    short n_short = SHRT_MAX;
    long n_long = LONG_MAX;
    long long n_llong = LLONG_MAX;
    cout << "int is " << sizeof(int) << " bytes" << endl;
    cout << "short is " << sizeof n_short << " bytes" << endl;
    cout << "long is " << sizeof n_long << " bytes" << endl;
    cout << "long long is " << sizeof n_llong << " bytes" << endl;
    
    cout << "maximum values: " << endl;
    cout << "int: " << n_int << endl;
    cout << "short: " << n_short << endl;
    cout << "long: " << n_long << endl;
    cout << "long: " << n_llong << endl;

    cout << "minimum int value = " << INT_MIN << endl;
    cout << "Bits per byte = " << CHAR_BIT << endl;
    return 0;
}

输出结果如下:

int is 4 bytes
short is 2 bytes
long is 4 bytes
long long is 8 bytes
maximum values:
int: 2147483647
short: 32767
long: 2147483647
long: 9223372036854775807
minimum int value = -2147483648
Bits per byte = 8

下面对程序做简单的解释说明:

1、运算符sizeof和头文件 limits

sizeof运算符指出,在使用8位字节的系统中,int的长度位4个字节。可以对变量名或类型名使用sizeof运算符,不过呢使用类型名的时候需要将它放在括号内,变量名则可以不需要。

最后,大家可以尝试去写写下面的代码,看看它的执行结果会是什么?

#include <iostream>
using namespace std;

int main() {
    int intVar;
    double doubleVar;
    char charVar;
    bool boolVar;
    
    // 使用 sizeof 操作符获取不同数据类型的字节大小
    cout << "Size of int: " << sizeof(intVar) << " bytes" << endl;
    cout << "Size of double: " << sizeof(doubleVar) << " bytes" << endl;
    cout << "Size of char: " << sizeof(charVar) << " bytes" << endl;
    cout << "Size of bool: " << sizeof(boolVar) << " bytes" << endl;

    // 也可以直接对类型使用 sizeof
    cout << "Size of float: " << sizeof(float) << " bytes" << endl;

    return 0;
}

总结

本次文章的主要带着大家学习变量名的起名方式,以及所有整型类型的认识以及它们所包含的长度和字节数,希望大家能够通过这篇文章学习并掌握变量与整型相关的知识。

带你开始学习C++的知识。

路漫漫其修远兮,吾将上下而求索。

与君共勉之!

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

推荐阅读更多精彩内容