简单的objective-c程序不起作用

时间:2013-09-25 15:03:07

标签: objective-c

有谁知道这段代码有什么问题?

int squareOf = 1500;
int squarer = 1;

    for(int i = 0;i <= squareOf; i++){

        for(;squarer <= i; squarer++){

            if(i / squarer == 0){
                NSLog(@"%i",i);
            }
        }

它没有给我任何错误,只是它没有输出任何东西。谁知道为什么?对不起,如果它非常明显,我对编程很陌生。

2 个答案:

答案 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总是等于squareri/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?如果您打算编写不同的代码,请告诉我您要实现的目标,并且我可以尝试更正代码。