静态类型

静态类型允许开发人员声明和使用 c. 变量中可用的某些变量类型, 一旦它们被声明为静态类型, 就不能更改它们的类型。 但是,它们允许编译器做更好的优化工作。 支持以下类型:

类型说明
array可以用作散列、映射、字典、集合、堆栈等的结构。
boolean布尔值表示真值。 它可以是truefalse
char能包含基本字符集的机器的最小可寻址单元。
float/double双精度浮点型。 大小依赖于平台。
integer带符号的整形 至少16位的大小。
long长有符号整数类型。 至少32位。
string字符串是一系列字符,其中字符与字节相同。
unsigned charchar大小相同,但保证是无符号的。
unsigned integer无符号整数 至少16位的大小。
unsigned longlong相同,但无符号。

Boolean

一个boolean表示一个真假。 它可以是truefalse。 与上面详细描述的动态行为相反,静态布尔值类型仍然是布尔值 (truefalse),不管赋予它们什么值:

  1. boolean a;
  2. let a = true;
自动转换为true
  1. let a = 100;
自动转换为false
  1. let a = 0;
抛出编译器异常
  1. let a = "hello";

字符/无符号字符

char变量是机器中能够包含基本字符集(通常是8位) 的最小可寻址单元。 char变量是机器中能够包含基本字符集(通常是8位) 的最小可寻址单元。

  1. char ch, string name = "peter";
stores ‘t’
  1. let ch = name[2];
char文字必须用单引号括起来
  1. let ch = 'Z';
  2. ```zephir
  3. <a name='static-types-integer-unsigned'></a>
  4. ### Integer/Unsigned Integer
  5. `integer` values are like the `integer` member in dynamic values. Values assigned to integer variables remain integer:
  6. ```zephir
  7. int a;
  8. let a = 50,
  9. a = -70;
自动转换为100
  1. let a = 100.25;
自动转换为0
  1. let a = null;
自动转换为0
  1. let a = false;
抛出编译器异常
  1. let a = "hello";

unsigned integer变量类似于integer但它们没有符号,这意味着你不能在这些变量中存储负数:

  1. uint a;
  2. let a = 50;
自动转换为70
  1. let a = -70;
自动转换为100
  1. let a = 100.25;
自动转换为0
  1. let a = null;
自动转换为0
  1. let a = false;
抛出编译器异常
  1. let a = "hello";

< 0>unsigned integer</0 > 变量比标准 integer 大两倍。 将 unsigned integer</0 > 分配给标准 (有符号) <code>integer 可能会导致数据丢失:

b 的数据可能丢失
  1. uint a, int b;
  2. let a = 2147483648,
  3. b = a;

长值/无符号长值

long 变量比 integer 变量大两倍, 因此它们可以存储较大的数字。 与 integer 一样, 分配给 long 变量的值将自动转换为此类型:

  1. long a;
  2. let a = 50,
  3. a = -70;
自动转换为100
  1. let a = 100.25;
自动转换为0
  1. let a = null;
自动转换为0
  1. let a = false;
抛出编译器异常
  1. let a = "hello";

< 0>unsigned long</0 > 类似 long 但它们没有符号, 这意味着您不能将负数存储在以下类型的变量中:

  1. ulong a;
  2. let a = 50;
自动转换为70
  1. let a = -70;
自动转换为100
  1. let a = 100.25;
自动转换为0
  1. let a = null;
自动转换为0
  1. let a = false;
抛出编译器异常
  1. let a = "hello";

< 0>unsigned long </0 > 变量比标准 long 大两倍; 将 unsigned long</0 > 分配给标准 (有符号) <code>long 可能会导致数据丢失:

b 的数据可能丢失
  1. ulong a, long b;
  2. let a = 4294967296,
  3. b = a;

String

一个string是一系列字符,其中字符与字节相同。 与PHP一样,Zephir只支持256个字符集,因此不提供本地Unicode支持。

当一个变量被声明为string时,它永远不会改变它的类型:

  1. string a;
  2. let a = "";
string 文字必须用双引号括起来
  1. let a = "hello";
转换为字符串“A”
  1. let a = 'A';
自动转换为””
  1. let a = null;