![]() |
|||||||||||||||||||||||||||||||||||||||||||||||
|
[wiki系列] openmp/samp 控制结构 - 打印版本 +- samp | open.mp 联机社区论坛 (https://open-mp.cn) +-- 板块: SA-MP (https://open-mp.cn/forumdisplay.php?fid=12) +--- 板块: 教程 (https://open-mp.cn/forumdisplay.php?fid=17) +--- 主题: [wiki系列] openmp/samp 控制结构 (/showthread.php?tid=20) |
|||||||||||||||||||||||||||||||||||||||||||||||
[wiki系列] openmp/samp 控制结构 - 小鸟unsigned - 03-21-2026 [wiki系列] openmp/samp 控制结构来自 SA-MP Wiki 目录
条件语句ifif 语句会检查某个条件是否成立,如果成立则执行对应代码。代码: newif 后面的括号内是条件,你可以进行多种判断(详见运算符部分)。条件中不仅可以是变量,也可以是函数: 代码: if (SomeFunction() == 5)还可以组合多个条件: 代码: new上面检查 a == 5 并且 b != 3,但 b 是 3,所以整个条件为假。使用 ||(或):代码: new只要有一个条件为真,整个 if 就成立(即使 b != 3 为假,因为 a == 5 为真)。还可以链式比较(无需显式写多个 &&): 代码: new运算符条件判断中常用的运算符及其含义: 比较运算符
逻辑运算符
括号括号决定运算顺序: 代码: new有两种可能的解释:
第一种:先判断 a==5 && b==3(为假),再判断 c==1(为真),整体为真。 第二种:先判断 b==3 || c==1(为真),再判断 a==5(为假),整体为假。强烈建议始终使用括号,既能明确逻辑,也能避免歧义。 elseelse 在 if 条件不成立时执行:代码: newelse ifelse if 用于在第一个 if 不成立时继续检查其他条件:代码: new你可以连续写多个 else if,但一个 if 组中只能有一个 else。注意: else if 只在最初的 if 失败时才检查,且变量值以检查开始时的状态为准。?:(三元运算符)? 和 : 组合成三元运算符,可将 if-else 写在单行内:代码: new可简化为: 代码: new(条件) ? 真值 : 假值也可以嵌套(类似多个 else if):代码: new循环while ()while 循环在条件成立时重复执行代码:代码: new每次到达 } 时会回到条件重新判断。for ()for 是压缩版的 while 循环,包含三部分:初始化、条件、递增。代码: for (new a = 9; a < 10; a++)常用遍历玩家示例: 代码: for (new i, a = GetMaxPlayers(); i < a; i++)三部分均可省略(留空): 代码: new a = 9;do-whiledo-while 先执行代码,再判断条件,因此至少执行一次:代码: newif-goto循环本质上就是 if + goto 的结构化形式(不推荐直接使用 goto):代码: newOBOE(Off By One Error)OBOE 是最常见的循环错误之一——循环多跑或少跑一次。 代码: new上面会尝试访问 b[10](越界),导致 OOB(Out Of Bounds)错误。特别注意: do-while 永远至少执行一次,更容易出现 OBOE。switchswitchswitch 是结构化的 if / else if / else,更清晰:代码: newswitch 只调用一次判断表达式(比连续 else if 更高效)。casecase 支持单个值、列表或范围:代码: case 1, 2, 3, 4: // 列表default相当于 else,所有 case 都不匹配时执行。单行语句gotogoto 直接跳转到标签(不推荐使用,会破坏程序流程)。breakbreak 立即跳出当前循环:代码: for (new a = 0; a < 10; a++)continuecontinue 跳过本次循环剩余代码,直接进入下一次迭代:代码: for (new a = 0; a < 3; a++)输出: 代码: a = 0注意:在某些循环(尤其是 while)中使用 continue 时要小心,可能导致无限循环。returnreturn 立即结束当前函数,返回到调用处:代码: main()输出: 代码: 1也可以返回具体值: 代码: return 27;注意:如果函数有时返回值,有时不返回值,必须在所有路径都显式 return 一个值。#GTA# #圣安地列斯# #侠盗猎车手# #圣安地列斯联机# #samp# #gta联机# #gtasa联机# #openmp# #omp# #open.mp# #gtasa# 社区交流群: 673335567 论坛: https://open-mp.cn/ |