我是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,但它是如何得到一个那么大的数字?
答案 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;
答案 4 :(得分:0)
它没有打印一个大数字,它只是在每个迭代/循环中一个接一个地打印i
。要看到使用这个
cout << i << endl;
或为i
或j
答案 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相同。