在 VEXcode Pro V5 中为整数创建变量

保存整数的类型: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));

变量类型.png


一个字节是什么意思?

一‘字节’是数据存储的标准单位。

一字节等于 8 位 一位是最小的内存单位,只能有 1 和 0 值(二进制值)。 但是,你可以从系统中获取的最小内存单位是 1 字节,所以你不能要求 1.5 字节等等。

让我们看一下 char。 它足够短到可以轻松显示。

usignedchar.jpg

如果全部用 1 填充,你将得到 28-1。 这个值应该是“unsigned char”应该保持的最大值。

字符值.jpg

系统保留了最高位以便给出负值。 因此,“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 码对照表的信息。

For more information, help, and tips, check out the many resources at VEX Professional Development Plus