C ++ for循环语法

时间:2016-01-13 15:33:29

标签: c++ for-loop

我是C的新手,并不理解这种类型的for循环语法。

for(int i = 9, int j = 0; i>j; i--, j++){
 System.out.println(i);
}

这给出了98765的结果,但为什么呢?

我习惯这样循环:

//array Im trying to populate
var contentArray:NSMutableArray = NSMutableArray()

func queryStatusTable() {
    contentArray.removeAllObjects()

    //query my table
    let queryUser = PFUser.query()
    let objectIdString = PFUser.currentUser()?.objectId
    queryUser?.whereKey("objectId", equalTo: objectIdString!)
    queryUser?.findObjectsInBackgroundWithBlock({ (objects: [PFObject]?, error: NSError?) -> Void in
        if let objects = objects {
            for object in objects {                    

                //used for the repeat loop 
                //object["userFriendsArray"] is an array I got from my above query 

                var i:Int = 0
                let count:Int = object["userFriendsArray"].count

                repeat {

                    //second query
                    let queryFriendStatus = PFQuery(className: "Content")
                    queryFriendStatus.whereKey("userObjectId", equalTo: object["userFriendsArray"][i])

                    //this is what I want to finish before the loop moves on
                    queryFriendStatus.findObjectsInBackgroundWithBlock({ (objects: [PFObject]?, error: NSError?) -> Void in
                        if let objects = objects {
                            for object in objects {
                                self.contentArray.addObject(object["content"])
                            }
                        }

                    })

                    //so i dont want this to run until the above task finishes
                    //and putting this inside the above task doesnt work because it will never run if its inside the findobjectinbackground
                    i++

                } while (i < count)
            }
        }

        //this is where I reload the table data to populate it with
        //whats in my *contentArray*
        self.firstTableView.reloadData()
    })
}

我看到我被初始化为9而j被初始化为0,但它是如何得到一个那么大的数字?

6 个答案:

答案 0 :(得分:10)

按预期打印9,8,7,6,5没有任何逗号。它不是一个大数字。

min-height:100%; /* height:100%; */ - 在最后打印一个新行。

System.out.println() - 行为方式与cout类似,不会在最后打印换行符。

答案 1 :(得分:3)

因为您没有打印换行符:

for(int i(9), j(0); i > j; i--, j++)
    cout << i << '\n';

答案 2 :(得分:2)

我想在此处发布的(好)答案中添加一些内容:

Error: Syntax error, unrecognized expression: option[value=Materiales menores]

做同样的事情

int i(9);

它被称为直接初始化。看看:Constructor of type int

我认为这首先让你感到困惑。

答案 3 :(得分:0)

缩进在C ++中无关紧要,因为空格被忽略......

因此,

for(int i(9), j(0); i > j; i--, j++)
cout << i;

与:

相同
for(int i(9), j(0); i > j; i--, j++)
    cout << i;

这是:

for(int i(9), j(0); i > j; i--, j++) {
    cout << i;
}

所以这不是一个数字,而是很多。

Java和大多数C系列语言都是一样的。

与System.out(一个PrintStream)的println不同...... <<只会将您传递给cout的内容写入,通常是STDOUT。 要正确地将换行符写入cout,您应该使用:

cout << i << endl;

有关详情,请参阅Why use endl when I can use a newline character?

答案 4 :(得分:0)

它没有打印一个大数字,它只是在每个迭代/循环中一个接一个地打印i。要看到使用这个

cout << i << endl;

或为ij

尝试不同的号码

答案 5 :(得分:0)

这不是一个很大的数字。实际上,输出是5个不同的数字(9,8,7,6,5)。 您只需通过以下方法将它们打印在不同的行中:

cout<<i<<endl;

OR

cout<<i<<"\n";

OR

printf("%d\n",i);

还有一件事: int i(9)简单地将值9赋给i。它与int i = 9相同。