Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

while

条件为 true 时重复执行的 while 循环

语法

while expression
    statements
end

说明

示例

while expression, statements, end 计算一个表达式,并在该表达式为 true 时在一个循环中重复执行一组语句。表达式的结果非空并且仅包含非零元素(逻辑值或实数值)时,该表达式为 true。否则,表达式为 false。

示例

全部折叠

使用 while 循环计算 factorial(10)

n = 10;
f = n;
while n > 1
    n = n-1;
    f = f*n;
end
disp(['n! = ' num2str(f)])
n! = 3628800

统计文件 magic.m 中的代码行数。使用 continue 语句跳过空白行和注释。continue 跳过 while 循环中的其余指令并开始下一迭代。

fid = fopen('magic.m','r');
count = 0;
while ~feof(fid)
    line = fgetl(fid);
    if isempty(line) || strncmp(line,'%',1) || ~ischar(line)
        continue
    end
    count = count + 1;
end
count
count = 34
fclose(fid);

求随机数序列之和,直到下一随机数大于上限为止。然后,使用 break 语句退出循环。

limit = 0.8;
s = 0;

while 1
    tmp = rand;
    if tmp > limit
        break
    end
    s = s + tmp;
end

详细信息

全部折叠

表达式

表达式可以包含关系运算符(例如 <==)和逻辑运算符(例如 &&||~)。使用逻辑运算符 andor 创建复合表达式。MATLAB® 按照运算符优先级规则从左至右计算复合表达式。

while...end 块的条件表达式中,逻辑运算符 &| 的行为方式和短路运算符一样。此行为分别相当于 &&||。由于 &&|| 在条件表达式和语句中一致短路,因此,建议在该表达式中使用 &&||,而不是 &|。例如,

x = 42;
while exist('myfunction.m','file') && (myfunction(x) >= pi)
    disp('Expressions are true')
    break
end

表达式的第一部分的计算结果为 false。因此,MATLAB 不需要计算表达式的第二部分,否则会导致未定义的函数错误。

提示

  • 如果意外创建了一个无限循环(即永远不会自行结束的循环),请按下 Ctrl+C 停止执行循环。

  • 如果条件表达式的计算结果是一个矩阵,则仅当该矩阵中的所有元素都为 true(非零)时,MATLAB 才会计算这些语句。要在任何元素为 true 时执行语句,请在 any 函数中对表达式换行。

  • 要以编程方式退出循环,请使用 break 语句。要跳过循环中的其余指令,并开始下一次迭代,请使用 continue 语句。

  • 嵌套许多 while 语句时,每个 while 语句都需要一个 end 关键字。

  • MATLAB while 循环类似于其他编程语言(如 C 和 C++)中的 do...while 循环。但是,while 在循环的开头而不是末尾计算条件表达式。

    do  % Not valid MATLAB syntax
        statements
    while expression
    

    要模拟 do...while 循环的行为,请将 while 的初始条件设置为 true,并将条件表达式放入循环内。例如,通过使用 MATLAB while 循环实现上面的 do...while 循环。

    while true
        statements
        if ~expression
            break
        end
    end
    

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

在 R2006a 之前推出