静态类型
静态类型允许开发人员声明和使用 c. 变量中可用的某些变量类型, 一旦它们被声明为静态类型, 就不能更改它们的类型。 但是,它们允许编译器做更好的优化工作。 支持以下类型:
类型 | 说明 |
---|---|
array | 可以用作散列、映射、字典、集合、堆栈等的结构。 |
boolean | 布尔值表示真值。 它可以是true 或false 。 |
char | 能包含基本字符集的机器的最小可寻址单元。 |
float /double | 双精度浮点型。 大小依赖于平台。 |
integer | 带符号的整形 至少16位的大小。 |
long | 长有符号整数类型。 至少32位。 |
string | 字符串是一系列字符,其中字符与字节相同。 |
unsigned char | 与char 大小相同,但保证是无符号的。 |
unsigned integer | 无符号整数 至少16位的大小。 |
unsigned long | 与long 相同,但无符号。 |
Boolean
一个boolean
表示一个真假。 它可以是true
或false
。 与上面详细描述的动态行为相反,静态布尔值
类型仍然是布尔值
(true
或false
),不管赋予它们什么值:
boolean a;
let a = true;
自动转换为true
let a = 100;
自动转换为false
let a = 0;
抛出编译器异常
let a = "hello";
字符/无符号字符
char
变量是机器中能够包含基本字符集(通常是8位) 的最小可寻址单元。 char
变量是机器中能够包含基本字符集(通常是8位) 的最小可寻址单元。
char ch, string name = "peter";
stores ‘t’
let ch = name[2];
char文字必须用单引号括起来
let ch = 'Z';
```zephir
<a name='static-types-integer-unsigned'></a>
### Integer/Unsigned Integer
`integer` values are like the `integer` member in dynamic values. Values assigned to integer variables remain integer:
```zephir
int a;
let a = 50,
a = -70;
自动转换为100
let a = 100.25;
自动转换为0
let a = null;
自动转换为0
let a = false;
抛出编译器异常
let a = "hello";
unsigned integer
变量类似于integer
但它们没有符号,这意味着你不能在这些变量中存储负数:
uint a;
let a = 50;
自动转换为70
let a = -70;
自动转换为100
let a = 100.25;
自动转换为0
let a = null;
自动转换为0
let a = false;
抛出编译器异常
let a = "hello";
< 0>unsigned integer</0 > 变量比标准 integer
大两倍。 将 unsigned integer</0 > 分配给标准 (有符号) <code>integer
可能会导致数据丢失:
b 的数据可能丢失
uint a, int b;
let a = 2147483648,
b = a;
长值/无符号长值
long
变量比 integer
变量大两倍, 因此它们可以存储较大的数字。 与 integer
一样, 分配给 long
变量的值将自动转换为此类型:
long a;
let a = 50,
a = -70;
自动转换为100
let a = 100.25;
自动转换为0
let a = null;
自动转换为0
let a = false;
抛出编译器异常
let a = "hello";
< 0>unsigned long</0 > 类似 long
但它们没有符号, 这意味着您不能将负数存储在以下类型的变量中:
ulong a;
let a = 50;
自动转换为70
let a = -70;
自动转换为100
let a = 100.25;
自动转换为0
let a = null;
自动转换为0
let a = false;
抛出编译器异常
let a = "hello";
< 0>unsigned long </0 > 变量比标准 long
大两倍; 将 unsigned long</0 > 分配给标准 (有符号) <code>long
可能会导致数据丢失:
b 的数据可能丢失
ulong a, long b;
let a = 4294967296,
b = a;
String
一个string是一系列字符,其中字符与字节相同。 与PHP一样,Zephir只支持256个字符集,因此不提供本地Unicode支持。
当一个变量被声明为string
时,它永远不会改变它的类型:
string a;
let a = "";
string 文字必须用双引号括起来
let a = "hello";
转换为字符串“A”
let a = 'A';
自动转换为””
let a = null;