while 八度无限循环
while infinite loop in octave
我正在编写一个代码,在不使用库方法的情况下将十进制数转换为二进制数。但是使用 while 循环。它似乎陷入了无限循环。
在调试器模式下,我试图查看 x
的值是多少。但是即使 x
的值变为 0 或 1,while 循环也不会退出。是八度音程中的错误还是 Matlab 也有这个问题(我没有 Matlab 或无法使用它)?
function ans = dec2bin(input)
x = int16(input);
y = [];
while (x!=1) || (x!=0)
y=[mod(x,int16(2)) y];
x=idivide(x,int16(2));
end
y=[mod(x,int16(2)) y];
ans = arrayfun(@(a) mat2str(a) ,y);
end
条件 (x!=1) || (x!=0)
将始终为真 - 如果 x 为 1,则不等于 0,并且 vise-versa。您应该使用 &&
逻辑条件,而不是 ||
:
while (x!=1) && (x!=0)
我正在编写一个代码,在不使用库方法的情况下将十进制数转换为二进制数。但是使用 while 循环。它似乎陷入了无限循环。
在调试器模式下,我试图查看 x
的值是多少。但是即使 x
的值变为 0 或 1,while 循环也不会退出。是八度音程中的错误还是 Matlab 也有这个问题(我没有 Matlab 或无法使用它)?
function ans = dec2bin(input)
x = int16(input);
y = [];
while (x!=1) || (x!=0)
y=[mod(x,int16(2)) y];
x=idivide(x,int16(2));
end
y=[mod(x,int16(2)) y];
ans = arrayfun(@(a) mat2str(a) ,y);
end
条件 (x!=1) || (x!=0)
将始终为真 - 如果 x 为 1,则不等于 0,并且 vise-versa。您应该使用 &&
逻辑条件,而不是 ||
:
while (x!=1) && (x!=0)