Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
241 views
in Technique[技术] by (71.8m points)

c - for loop missing initialization

I've seen

for(;;)

and

for ( ; *s != ''; s++)

Why is it blank like that. Thanks.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The for statement works like:

for (initialization; test-condition; update)

And any or all of those three can be omitted (left blank). So:

  • for (;;) is an infinite loop1 equivalent to while (true) because there is no test condition. In fact, for (int i=0; ;i++) would also be an infinite loop1.

  • for ( ; *s != ''; s++) is a loop with no initialization. s will point to the beginning of (probably) a string and is incremented until it reaches the null character '' denoting end-of-string. This essentially means loop through all characters of the string s

1 The loop will still be interrupted if there's a break statement in the loop body, or a call to exit(), etc...


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...