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个字符。
<单值表达式> <char>
<单值表达式> <char> [;]
// 正常储存字符串,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);
}