3.1简单变量

3.1简单变量

3.1.1 变量名

1、命名规则
  • 在名称中只能使用字母、数字和下划线(_)
  • 名称的第一个只能是字母或者下划线
  • 区分大写和小写字符
  • 不能将C++关键字用作名称
  • 以两个下划线开头或以下划线和大写字母开头的名称被保留实现(编译器及其使用的资源)使用。以一个下划线开头的名称被保留给实现,用作全局标识符。
  • C++对于名称长度没有限制,名称中所有的字符都有意义,但有些平台有长度限制。

对于倒数第二点,使用像_time_stop或_Donut这样的名称不会导致编译器出错,而会导致行为的不确定性。不知道结果将是什么。不导致编译器出错的原因是,这样的名称不是非法的,但要留给保留使用。简单的说,不要用这样的命名方式。

3.1.2 整型

1、什么是整数?

整数就是没有小数部分的数字。由于整数有很多,有限的计算机内存不能表示所有的整数。因此,C++语言中只能表示所有整数的一个子集,不能表示所有。

2、术语宽度(width)

术语宽度用于描述存储整型时使用的内存量。

3、C++基本整型

C++基本整型分别是char,short,int,long,long long,其中每种类型都有无符号和有符号版本,所以,一共有10种类型可供选择。

3.1.3 整型short、int、long和long long

1、位(bit)与字节(byte)

计算机的基本内存单位是位(bit),只有0和1两种数值。但是每一位都可以有两种设置,所以8位的内存块可以设置出256种不同的组合,即2x2x2x2x2x2x2x2=256。因此,8位单元可以表示0~ 255或者 -128~127。
字节(byte)通常指的是8位的内存单元。字节用于描述计算机内存量的度量单位。1KB = 1024字节。在C++中,字节由至少能够容纳实现的基本字符集的相邻位组成,也就是说可能取值的数目必须等于或者超过字符数目。C++字节通常是8位。

2、C++整型的最小长度
  • short至少16位
  • int至少与short一样长
  • long至少32位,且至少与int一样长
  • long long至少64位,且至少与long一样长
3、sizeof运算符

sizeof运算符返回类型或者变量的长度,单位为字节。sizeof运算符指出在8位系统中int占4个字节

cout<<"int is "<<sizeof(int);
4、#define预处理器编译指令
#define INT_MAX 32767

在C++编译过程中,首先将源代码传给预处理器。该编译指令告诉预处理器:在程序中查找INT_MAX 替换成 32767。预处理器只会查找独立的标记(单独的单词),跳过嵌入的单词,如:PINT_MAX 不会被替换成P32767。

5、初始化

初始化将赋值和声明合并在一起。

int uncles = 5; // C语言的初始化
int wrens(432); //C++初始化
/* C++ 11 初始化*/
int hamburgers = {24};
int emus{7};
int psychics{}; // =0
6、为什么需要更多的初始化方法?

原因是让新手更容易学习C++。以前,C++使用不同的方法初始化不同的类型,初始化类变量的方式不同于初始化常规结构的方式,初始化常规结构的方式又不同于初始化简单变量的方式。 通过使用C++新增的大括号初始化器,初始化常规结构的方式与初始化类变量的方式更像。C++11使得大括号初始化器可用于任何类型。

3.1.4 无符号类型

1、什么是无符号类型

无符号类型是不能存储负数值的类型,其优点是可以增大变量能够存储的最大值。例如,short的范围是-32768~ 32767,而unsigned short的范围0~ 65535。

2、什么时候使用无符号类型

仅当数值不为负数的时候才使用,如人口、粒数等。要创建无符号类型版本的基本整型,只需要使用关键字unsigned来修改声明即可

unsigned short change; //无符号short
unsigned int rovert;//无符号int
unsigned quarterback;//也是无符号int
unsigned long gone;//无符号long

unsigned本身是unsigned int的缩写

3、一些注意事项
#include<iostream>
#include<string>
#include<climits>
using std::cout;
using std::endl;

int main()
{
	short n = SHRT_MAX;
	cout << n << endl;
	n++;
	cout << n << endl;
	unsigned short j = 0;
	j--;
	cout << j;
	return 0;
}

在这里插入图片描述
可以看到,n的值从32767变成了-32768,而j的值从0变成了65535。可以看出,整型变量的行为就像里程表。如果超过了限制,其值将在范围另一端取值。**C++确保了无符号类型的这种行为;但C++不确保符号整型超越限制时不出错。

3.1.5 选择整型类型

1、C++提供了大量的整型,如何选择?
  • 通常,int被设置为目标计算机最为“自然”的长度。自然长度指的是计算机处理起来效率最高的长度。如果没有非常有说服力的理由来选择其他类型,则应使用int。
  • 如果变量不为负数,则可以使用无符号类型。
  • 如果知道变量可能表示的值大于16位整数的最大可能值,则使用long。即使系统上int为32位,也应这样做。这样,将系统移植到16位系统时,就不会突然无法正常工作(在32位系统和16位系统中,int的大小是不一样的,32位系统int占4个字节,16位系统中int只占2个字节)。
  • 如果要存储的值超过20亿,则使用long long。
  • 由于short比int小,使用short可以节省内存。通常,仅当有大型整数数组时,才有必要使用short。如果节省内存很重要,则应使用short而不是使用int。当int从16位系统移植到32位系统时,内存量会增大一倍,而short不会。
  • 如果只需要一个字节,则使用char。

3.1.6 整型字面值

1、C++的计数方式
  • 十进制:如果第一位是1~9,基数为10,逢十进一。
  • 八进制:如果第一位是0,基数为8,逢八进一。
  • 十六进制:如果前两位是0x或0X,基数为16,逢十六进一。
2、cout的默认输出

cout默认情况下输出为十进制。当然也可以通过代码修改。

#include<iostream>
#include<string>
#include<climits>
using std::cout;
using std::endl;

int main()
{
	int n = 20;
	cout <<"十进制:" << n << endl; //默认输出十进制
	cout << std::hex;//输出修改为十六进制
	cout << "十六进制:" << n <<endl;
	cout << std::oct;//输出修改为八进制
	cout << "八进制:" << n;
	return 0;
}

在这里插入图片描述
cout << std::hex;不会在屏幕上打印内容,只是修改cout显示整数的方式。hex是十六进制,oct是八进制,dec是十进制。

3.1.7 C++如何确定常量

  • 除非有理由存储为其他类型,否则C++将常量整型存储为int类型。
  • 看后缀。后缀是放在数字常量后面的字母,用于表示类型。整数后面的l(L的小写)或L后缀表示该整数位long常量,u或者U后缀表示unsigned int常量,ul表示 unsigned long常量,ull表示unsigned long long。
  • 考察长度。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

czx鑫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值