5. 逻辑语句

5.1. 条件表达式

条件表达式返回结果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") {}   // 错误!不支持字符串拼接后再做判断

提示

  • 字符串型变量不支持运算后再做逻辑判断,如 if (b1.txt + "123" == "bnt123") 是错误的

  • 字符串型变量不支持括号嵌套,如 if ((b1.txt.str == "123") || (b2.txt.str == "456"))

5.2. 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
}

提示

  • 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;
}

5.3. for语句

for语句for(赋值表达式; 条件表达式; 赋值表达式) { }

// 执行一次赋值表达式1,
// 判断条件表达式,结果为真则执行{}里面内容,然后再执行赋值表达式2。一直循环此步骤,直至条件表达式结果为假
// 条件表达式结果为假,跳到{}之后

for(赋值表达式1; 条件表达式; 赋值表达式2)
{

}

提示

  • 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);
        }
    }
}

5.4. while语句

while语句while(条件表达式) { }

// 判断条件表达式,结果为真则执行{}里面内容,一直循环此步骤知道条件表达式结果为假。
// 条件表达式结果为假,跳到{}之后

while(条件表达式)
{

}

提示

  • 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);
        }
    }
}