保存整数的类型:char、short、int、long、long long
让我们看一些例子:
char cvar = 50; char cvar = 50; short svar = 50; int ivar = 50; long lvar1 = 50; long lvar2 = 50;
基本算术运算符:
大多数人都熟悉基本的算术运算符和优先顺序:+、-、*、/
以下是如何使用一元运算符的一些示例:++ 和 --:
表达式 | 相当于 | 也相当于 |
cvar += 5; | cvar = cvar + 5; | |
++cvar; | cvar++; | cvar = cvar + 1; |
--cvar; | cvar--; | cvar = cvar - 1; |
当心变量 ++ 与 ++ 变量!
++变量
int x = 10, y = 20; X = ++y;
注意:经过此操作后:X = 21,Y = 21。
变量++
int x = 10, y = 20; X = y++;
注意:经过此操作后:X = 20,Y = 21。
比较整数数据类型
有一种允许正值和负值的组或数据类型 - “带符号的。” 但是,你不需要去指定,因为它是隐式的。 如下所示:
数据类型 | 最小值 | 最大值 |
char | -2 7 或 -128 | 2 7 - 1 或 127 |
short | -2 15 或 -32,768 | 2 15 - 1 或 32,767 |
int | -2 31 或 -2,147,483,648 | 2 31 – 1 或 2,147,483,647 |
long | -2 31 或 -2,147,483,648 | 2 31 – 1 或 2,147,483,647 |
long long | -2 63 或 -9,223,372,036,854,775,808 | 2 63 – 1 或 9,223,372,036,854,775,807 |
有一种只允许正值的组或数据类型 - “不带符号的。”
数据类型 | 最小值 | 最大值 |
无符号的 char | 0 | 2 8 - 1 或 255 |
无符号 short | 0 | 2 16 - 1 或 65,535 |
无符号 int | 0 | 2 32 – 1 或 4,294,967,295 |
无符号 long | 0 | 2 32 – 1 或 4,294,967,295 |
无符号 long long | 0 | 2 64 – 1 或 18,446,744,073,709,551,615 |
你如何验证数据大小?
暂时,你应该知道sizeof()
运算符。 这提供了称为‘字节’的内存存储单元 - 将在下一部分中稍微介绍。
示例告诉你应该使用sizeof()
运算符输入的字节数。 试试这个来自己验证它们。 如果你更换到另一个遥控器,你可以随时执行以下操作来验证。
Brain.Screen.setFont(fontType::mono30); Brain.Screen.printAt(1, 20,"char has %d bytes", sizeof(char)); Brain.Screen.printAt(1, 50,"short has %d bytes", sizeof(short)); Brain.Screen.printAt(1, 80,"int has %d bytes", sizeof(int)); Brain.Screen.printAt(1, 110, "long has %d bytes", sizeof(long)); Brain.Screen.printAt(1, 140, "long long has %d bytes", sizeof(long long)); Brain.Screen.printAt(1, 170, "float has %d bytes", sizeof(float)); Brain.Screen.printAt(1, 200, "double has %d bytes", sizeof(double));
一个字节是什么意思?
一‘字节’是数据存储的标准单位。
一字节等于 8 位 一位是最小的内存单位,只能有 1 和 0 值(二进制值)。 但是,你可以从系统中获取的最小内存单位是 1 字节,所以你不能要求 1.5 字节等等。
让我们看一下 char。 它足够短到可以轻松显示。
如果全部用 1 填充,你将得到 28-1。 这个值应该是“unsigned char”应该保持的最大值。
系统保留了最高位以便给出负值。 因此,“char”的最大范围值是 -128 到 127。 但是,尽管数据范围有差异,容量仍然与“unsigned char”相同。
在计算机中,它使用一种称为“二进制补码”的操作。 这是按位运算主题下的一部分,超出了本文的范围。 更多有关此主题的内容将在另一篇文章中讨论。
char 和 int 的区别是什么?
以下是“char”和“int”的一些常见用法:
char var1 = ‘9’; int var2 = 9;
一个常见的误解是“char”只能保持诸如‘a’,‘b’,或者‘9’之类的符号。 这是错误的。
实际上,“char”类型和“int”类型是一样的,除了 char 的容量只有 1 字节,而 int 的容量是 4 字节。 因此,两者的数据大小范围不同。 你可以在上面的数据范围表中看到。
以下代码片段将给你一个更清晰的 char 和 int 的视角。
int iX = '0'; char cX1 = 49; char cX2 = 50; Brain.Screen.printAt(3, 20, "int representation of '%c' = %d",iX, iX); Brain.Screen.printAt(3, 50, "int representation of '%c' = %d",cX1, cX1); Brain.Screen.printAt(3, 80, "int representation of '%c' = %d",cX2, cX2); Brain.Screen.printAt(3, 140, "So '%c' - '%c' = %d ", cX2, iX, cX2 - cX1);
输出:
int representation of ‘0’ = 48 int representation of ‘1’ = 49 int representation of ‘2’ = 50 So ‘2’ – ‘0’ = 1
你可能想知道:为什么 ‘0’显示 48?
这将引导到称为“ASCII 码”转换的主题。 ASCII 标准是 1963 年发布的一个伟大的 IEEE 里程碑。 这超出了本文的范围。 鼓励你在线搜索 ASCII 码对照表。 你将会在线找到大量的关于 ASCII 码对照表的信息。