【发布时间】:2016-05-23 12:01:14
【问题描述】:
我已经在 MATLAB 中执行了这个简单的循环脚本
clc;clear; close all;
m = 100;
for i = 1:m
if(i == 2)
m = 1000;
end
end
发现,'i' 只循环到 '100' 而不是 '1000'。为什么……??
【问题讨论】:
-
阅读for,尤其是最后一节。 避免在循环语句中为索引变量赋值。 for 语句覆盖循环内对索引所做的任何更改。
-
这真的是你想要的吗?还是你真的想做点别的?
-
@Bernhard:是的,这就是我想要的。 :)
-
@GautamKrishna 不,在这种情况下,只需输入
m=1000并删除if。 -
@Jonas 这就是问题所在 :) 除了结果错误之外,人们永远不会发现问题所在。假设呼叫
double x = 0; double y = SQUARE(x+1);。这将等同于double y = x+1*x+1 == 2*x+1 != (x+1)^2。假设结果表达式是二阶方程?呵呵,真是太邪恶了:)。无论如何,正确的定义是#define SQUARE(a) ((a)*(a))。