• 0 票 - 平均分 0
  • 1
  • 2
  • 3
  • 4
  • 5
[wiki系列] openmp/samp 关键字:运算符
#1

[wiki系列] openmp/samp 关键字:运算符



来自 SA-MP Wiki



目录





char



char 返回存放给定数量字符(打包字符串)所需的 cells 数量。 
即:存放给定字节数所需的 4 字节 cells 数量。

示例:

代码:
4 char

返回 1

代码:
3 char

返回 1(你不能拥有 3/4 个变量)。

代码:
256 char

返回 64(256 ÷ 4)。

此运算符通常用于变量声明:

代码:
new
    someVar[40 char];

会创建一个10 cells大小的数组。

更多关于打包字符串(packed strings)的细节,请阅读 pawn-lang.pdf



defined



检查一个符号(symbol)是否存在。通常用于 #if 语句:

代码:
new
    someVar = 5;
#if defined someVar
    printf("%d", someVar);
#else
    #error The variable 'someVar' isn't defined
#endif

最常见的用法是检查某个 #define 是否存在,并据此生成不同代码:

代码:
#define FILTERSCRIPT
#if defined FILTERSCRIPT
public OnFilterScriptInit()
{
    return 1;
}
#else
public OnGameModeInit()
{
    return 1;
}
#endif



sizeof



返回数组元素(ELEMENTS)的数量:

代码:
new
    someVar[10];
printf("%d", sizeof (someVar));

输出:

代码:
10

二维数组示例:

代码:
new
    someVar[2][10];
printf("%d %d", sizeof (someVar), sizeof (someVar[]));

输出:

代码:
2 10



state



此关键字与 PAWN 自动机(autonoma)代码相关,因此本文不做介绍。



tagof



tagof 返回一个代表变量标签(tag)的数字:

代码:
new
    someVar,
    Float:someFloat;
printf("%d %d", tagof (someVar), tagof (someFloat));

输出:

代码:
-./,)),(-*,( -1073741820

这其实是一个轻微的显示 bug,但本质上代表:

代码:
0x80000000 0xC0000004

实际应用:检查变量是否为 Float



代码:
new Float: fValue = 6.9;
new tag = tagof (fValue);
if (tag == tagof (Float:))
    print("float");
else
    print("not a float");


#GTA# #圣安地列斯# #侠盗猎车手# #圣安地列斯联机# #samp# #gta联机# #gtasa联机# #openmp# #omp# #open.mp# #gtasa#

社区交流群: 673335567

论坛: https://open-mp.cn/
  回复


论坛跳转:


浏览此主题的用户: 1 位客人