在下面的Objective-C代码中,当满足第一个内部'if'语句时(true),这是否意味着循环终止并转到下一个语句?
此外,当它在执行一次后返回内部'for'语句时,p的值是否再次为2,为什么?
// Program to generate a table of prime numbers
#import <Foundation/Foundation.h>
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int p, d, isPrime;
for ( p = 2; p <= 50; ++p ) {
isPrime = 1;
for ( d = 2; d < p; ++d )
if (p % d == 0)
isPrime = 0;
if ( isPrime != 0 )
NSLog (@”%i ", p);
}
[pool drain];
return 0;
}
提前致谢。
答案 0 :(得分:4)
在发生以下任一情况之前,循环不会终止:
PS。使用花括号,否则你的代码将无法读取/调试/保护
答案 1 :(得分:1)
不,'if'语句解析为true不会让你脱离循环。循环继续执行,这可能是你认为p仍为2的原因。它仍然是2,因为你仍处于内循环中。
答案 2 :(得分:0)
您的代码与此相同:
// Program to generate a table of prime numbers
import <Foundation/Foundation.h>
int main (int argc, char *argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int p, d, isPrime;
for ( p = 2; p <= 50; ++p ) {
isPrime = 1;
for ( d = 2; d < p; ++d ) {
if (p % d == 0) {
isPrime = 0;
}
}
if ( isPrime != 0 ) {
NSLog (@”%i ", p);
}
}
[pool drain];
return 0;
}
if
和for
控制语句的内容是大括号中的下一个语句或语句块。
正如daveoncode所说,你真的应该使用大括号。