逻辑语句 --------------------- 条件表达式 ^^^^^^^^^^^^^^^^^^^^^ 条件表达式返回结果0(假)或1(真),用于逻辑语句的判断,如: - ``if(条件表达式)`` - ``while(条件表达式)`` - ``for(赋值表达式; 条件表达式; 赋值表达式)`` **数值变量条件表达式(支持符号:>, <, ==, !=, >=, <=, &&, ||)** :: // 正确写法 if (b1.x > b2.x) {} // 关系判断 if (b1.x == 0) {} // 关系判断 if (b1.x > 10 && b1.x <= 100) {} // b1.x大于10且小于等于100才执行{}里面的内容 if (b1.x != 0 || b2.x != 0) {} // b1.x、b2.x其中一个不等于0才执行{}里面的内容 if (b1.x) {} // b1.x不为0才执行{}里面的内容 if (b1.x && b2.x) {} // b1.x 、b2.x都不为0才执行{}里面的内容 if (b1.x || b2.x) {} // b1.x 、b2.x其中一个不为0才执行{}里面的内容 // 错误写法 if (b1.x = 10) {} // 错误!条件表达式不能出现赋值符号 if ((b1.x > 10) && (b1.x <= 100)) {} // 错误!关系运算(> >= < <= == !=)不支持括号优先级 if ((b1.x || b2.x) && (b3.x || b4.x)) {} // 错误!逻辑运算(|| &&)不支持括号优先级 **字符串变量条件表达式(支持符号:==, !=, &&, ||)** :: // 正确写法 if (b1.txt.str == "123") {} // b1.txt.str字符串等于"123"才执行{}里面的内容 if (b1.txt.str != "123") {} // b1.txt.str字符串不等于"123"才执行{}里面的内容 if (b1.txt.str == "123" && b2.txt.str == "456") {} // 两个都相等才执行{}里面的内容 if (b1.txt.str == "123" || b2.txt.str == "456") {} // 有一个相等才执行{}里面的内容 if (b1.txt.str) {} // 如果b1.txt.str字符串内容不为空才执行{}里面的内容 if (b1.txt.str && b2.txt.str) {} // b1.txt.str、b1.txt.str字符串内容都不为空才执行{}里面的内容 if (b1.txt.str || b2.txt.str) {} // b1.txt.str、b1.txt.str字符串内容其中一个不为0才执行{}里面的内容 // 错误写法 if (b1.txt.str = "123") {} // 错误!条件表达式不能出现赋值符号 if (b1.txt.str >= "123") {} // 错误!字符串变量仅支持 == != if (b1.txt.str + 2 == "123") {} // 错误!字符串变量不支持 - * / % ()括号 等算术运算 if (b1.txt.str + "123" == "Btn123") {} // 错误!不支持字符串拼接后再做判断 .. hint:: - 字符串型变量不支持运算后再做逻辑判断,如 ``if (b1.txt + "123" == "bnt123")`` 是错误的 - 字符串型变量不支持括号嵌套,如 ``if ((b1.txt.str == "123") || (b2.txt.str == "456"))`` if语句 ^^^^^^^^^^^^^^^^^^^^^ **if语句形式** : ``if(条件表达式) { }`` :: // 1. if 形式 if (exp1) { // exp1结果为真,执行这里面 } // 2. if else 形式 if (exp1) { // exp1结果为真,执行这里面,然后跳到 else {}之后 } else { // exp1结果为假,执行这里面 } // 3. if else if 形式 if (exp1) { // exp1结果为真,执行这里面,然后跳到 else {}之后 } else if (exp2) { // exp1结果为假,且exp2也为真,执行这里面 } else { // exp1\exp2都为假,执行这里面 } // 4. 嵌套 if (exp1) { // 支持随意嵌套 if \ else if if (exp2) { } else { } } else { // 支持随意嵌套 if \ else if } .. hint:: - if ()后面必需写花括号"{}" **举例1:** :: // 定时器调用,实现g1.val在0-360内,循环增加 g1.val += 1; if(g1.val >= 360) { g1.val = 0; } **举例2:** :: if (b1.txt.str == "播放") { b1.txt.str = "暂停"; } else if (b1.txt.str == "暂停") { b1.txt.str = "播放"; } else { b1.txt.str = "停止"; } **举例3:** :: if (b1.txt.str == "切换页面") { if(b1.x > 100) { b1.txt.str = "切换到1页面"; page(1); } else { b1.txt.str = "切换到2页面" page(2); } } else if (b1.txt.str == "移动坐标") { b1.x += 50; } for语句 ^^^^^^^^^^^^^^^^^^^^^ **for语句** : ``for(赋值表达式; 条件表达式; 赋值表达式) { }`` :: // 执行一次赋值表达式1, // 判断条件表达式,结果为真则执行{}里面内容,然后再执行赋值表达式2。一直循环此步骤,直至条件表达式结果为假 // 条件表达式结果为假,跳到{}之后 for(赋值表达式1; 条件表达式; 赋值表达式2) { } .. hint:: - for ()后面必需写花括号"{}" **举例1:** :: int i,j; // 变量定义, 需写在最前面 for (i = 0; i < 10; i++) { for (j = 0; j < 10; j++) { if (j == 5) { b1.x = 100; prints("b1.x=%d\r\n", b1.x); } } } while语句 ^^^^^^^^^^^^^^^^^^^^^ **while语句** : ``while(条件表达式) { }`` :: // 判断条件表达式,结果为真则执行{}里面内容,一直循环此步骤知道条件表达式结果为假。 // 条件表达式结果为假,跳到{}之后 while(条件表达式) { } .. hint:: - while ()后面必需写花括号"{}" **举例1:** :: int i=0,j=0; // 变量定义, 需写在最前面 while (i < 10) { i++; for (j = 0; j < 10; j++) { if (j == 5) { b1.x = 100; prints("b1.x=%d\r\n", b1.x); } } }