2

在 CGRect 的实现中,我尝试这样做:

BOOL didStartPressing = NO;
if ( didStartPressing) {int nmax=5;}
else{int nmax=500;}

for (int n=1; n<nmax; n=n+1){ *... working code that draws some circles ....*     }

这会在上面的第一部分中给出关于“未使用的变量 nmax”的黄色警告和关于“使用未声明的变量 nmax”的红色警告。对于 for 循环。但是,如果我只是将上面的前三行替换为

int nmax=500; 

我得到了一张我在 CGRect 中绘制的可爱图片。

非常感谢您的帮助,因为我完全没有学习曲线的硬墙。

4

2 回答 2

3

您已将 的范围限制在和之后的nmax大括号内。因此,您有两个具有该名称的变量,这两个变量对循环都不可见。要解决此问题,请将声明移至外部作用域并简单地分配给/作用域中的变量:ifelseforifelse

int nmax = 0;   // the = 0 is optional in this case because all code
                // paths assign a value to nmax
BOOL didStartPressing = NO;
if (didStartPressing) {
    nmax=5;
} else {
    nmax=500;
}

for (int n=1; n<nmax; n=n+1) {
    /*... working code that draws some circles ....*/
}
于 2012-09-23T22:39:26.167 回答
1

这是C语言的东西。在一对大括号内声明的变量的范围只是大括号内的部分。这意味着您有两个不同的变量,它们都被调用nmax并且每个都限制在 if/else 语句的部分。

你可以让它工作:

int nmax = 500;
if ( didStartPressing) {
    nmax=5;
}

有关更多详细信息,请参阅有关 C 编程的书。

于 2012-09-23T22:39:04.753 回答