首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >counter++/counter--未按预期工作

counter++/counter--未按预期工作
EN

Stack Overflow用户
提问于 2012-02-27 12:00:36
回答 3查看 265关注 0票数 2

下面是我使用的代码。如果我按addQuanity,m_label is set会显示一个而不是两个。如果我再次按addWuantity,m_label将显示2。按minusQuantity将m_label更改为3而不是2,但再次按minusQuanity将m_label更改为2。

谢谢你,莱恩

代码语言:javascript
复制
NSInteger counter = 1;
-(IBAction) addQuantity
{
if (counter > 9 )
    return;
[m_label setText:[NSString stringWithFormat:@"%d",++counter]];
}

-(IBAction) minusQuantity
{
if (counter < 1 )
    return;
[m_label setText:[NSString stringWithFormat:@"%d",--counter]];
}
EN

回答 3

Stack Overflow用户

发布于 2012-02-27 12:25:02

您是否使用递增(++)和递减(--)运算符作为前缀或后缀?如果您将它们用作后缀(如您在问题标题中所示),它们将按照您所描述的那样运行。如果您将它们用作前缀(如您在问题正文中所示),则它们将按照您的预期运行。

当用作后缀时,表达式将返回变量的原始值,然后加/减一。

代码语言:javascript
复制
NSInteger counter = 1;
NSLog(@"%i", counter++);  // will print "1"
// now counter equals 2

当用作前缀时,表达式将加/减1,然后返回更新后的变量的值。

代码语言:javascript
复制
NSInteger counter = 1;
NSLog(@"%i", ++counter);  // will print "2"
// now counter equals 2
票数 3
EN

Stack Overflow用户

发布于 2012-02-27 13:27:47

节省一行代码,使您的程序逻辑更容易理解。

代码语言:javascript
复制
NSInteger counter = 1;

-(IBAction) addQuantity
{
if (counter <= 9 )
    [m_label setText:[NSString stringWithFormat:@"%d",++counter]];
}

-(IBAction) minusQuantity
{
if (counter >= 1 )
    [m_label setText:[NSString stringWithFormat:@"%d",--counter]];
}
票数 1
EN

Stack Overflow用户

发布于 2012-02-27 12:22:19

而不是

代码语言:javascript
复制
[m_label setText:[NSString stringWithFormat:@"%d",--counter]];

试一试

代码语言:javascript
复制
counter -=1;
[m_label setText:[NSString stringWithFormat:@"%d",counter]];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9459879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档