有谁知道这段代码有什么问题?
int squareOf = 1500;
int squarer = 1;
for(int i = 0;i <= squareOf; i++){
for(;squarer <= i; squarer++){
if(i / squarer == 0){
NSLog(@"%i",i);
}
}
它没有给我任何错误,只是它没有输出任何东西。谁知道为什么?对不起,如果它非常明显,我对编程很陌生。
答案 0 :(得分:1)
这一行:
if(i / squarer == 0)
它从未被调用,将日志放在代码中并且您将理解:
for(int i = 0;i <= squareOf; i++){
for(;squarer <= i; squarer++){
NSLog(@"%d - %d", i, squarer)
if(i / squarer == 0){
NSLog(@"%i",i);
}
}
答案 1 :(得分:0)
在第一次迭代期间,内部循环不会启动,因为squarer
为1,i
为0,因此永远不会满足for条件。
在第二次迭代期间,内部循环执行一次,因为i
为1且squarer
为1. i/squarer
为1,因此它不会打印任何内容。
在第三个循环期间squarer
已经是2(在前一个循环中递增),i
为2,因此循环执行一次,i/squarer
再次为1.
你可以很容易地想象在所有其他循环中发生了什么:i
总是等于squarer
,i/squarer
总是1.使用两个嵌套循环完全没用这个目的,请参阅此代码:
int squareOf = 1500;
int squarer = 1;
for(int i=1; i<=squareOf; i++) {
if(i / squarer == 0)
NSLog(@"%i",i);
else
NSLog(@"i/squarer is not zero");
}
它是等价的,i/squarer
永远不会为零,为了清楚起见,我添加了一个日志声明。现在你明白为什么i/squarer
总是1?如果您打算编写不同的代码,请告诉我您要实现的目标,并且我可以尝试更正代码。