AMXXPawn char关键字

1. 核心功能

char用于计算需要多大尺寸的数组,才能储存指定数量的字节,专为压缩字符串服务。

AMX Mod X 1.10.0及旧版本都是32位,cell是AMXXPawn语言的唯一数值类型,等同于int32,通常可储存1个数值或1个字符。

由于1个字符最多只需8位(1个字节)储存,32位的cell完全可以储存4个字符。

用于一个cell的字节数是4,因此e char等同于(e + 3) / 4。

极少数情况下,我们希望用cell数组尽可能储存多的字符,此时可用char计算,多少个cell才能储存e个字符。

2. 求压缩尺寸语法

求压缩尺寸表达式:

<单值表达式> <char>

求压缩尺寸语句:

<单值表达式> <char> [;]

<>是必填项目,[]是可选项目。

<单值表达式>可以是常量表达式、单值变量、单值函数,但决不能是数组、数组的单值元素(可能是编译器bug)。

若<单值表达式>是求尺寸表达式,应改为(求尺寸表达式)。例如:sizeof a char应改为(sizeof a) char形式。

3. 代码示例

// 正常储存字符串,1个英文1字节,1个中文占3字节,加上终止符,text的cell数量为24 static text[] = "一段文本:hello word"; public plugin_init() { // 将text变量的内容压缩储存到packedText变量 new packedText[(sizeof text) char]; for (new cellId; text[cellId] != EOS; cellId++) packedText{cellId} = text[cellId]; // 打印:[AMXX]text的尺寸:24 server_print("[AMXX]text的尺寸:%d", sizeof text); // 打印:[AMXX]packedText的尺寸:6 server_print("[AMXX]packedText的尺寸:%d", sizeof packedText); }