我有一个计时器的无符号整数。但是,当我将其减去1且值为零时,它将显示一个正数。像这样:http://prntscr.com/2wkydb。
这是我的代码Viewcontroller.m:
-(IBAction)btnUp:(id)sender
{
timer = timer + 1;
lblTimer.text = [NSString stringWithFormat:@"%u", timer];
}
-(IBAction)btnDown:(id)sender
{
timer = timer - 1;
lblTimer.text = [NSString stringWithFormat:@"%u", timer];
}
-(IBAction)btnRestart:(id)sender
{
lblTimer.text = [NSString stringWithFormat:@"0"];
}
Viewcontroller.h:
@interface ViewController : UIViewController
{
unsigned int timer;
IBOutlet UILabel *lblTimer;
}
-(IBAction)btnUp:(id)sender;
-(IBAction)btnDown:(id)sender;
-(IBAction)btnRestart:(id)sender;
@end
我该怎么办,它不会显示正数,但计时器保持为0?
提前致谢。
编辑:我也不希望计时器显示一个负值。
最佳答案
无符号整数“环绕”。从零减去1得到(假设32位整数):
0xFFFFFFFF = 4294967295
如果您不想这样做,则将代码更改为:
if (timer > 0)
timer = timer - 1;
更好的是,当值达到零时禁用“向下”按钮,然后启用
值为正时再次输入。
诸如此类(未经测试,未经编译器检查):
-(IBAction)btnUp:(UIButton *)sender
{
timer = timer + 1;
lblTimer.text = [NSString stringWithFormat:@"%u", timer];
self.downButton.enabled = YES;
}
-(IBAction)btnDown:(UIButton *)sender
{
timer = timer - 1;
lblTimer.text = [NSString stringWithFormat:@"%u", timer];
sender.enabled = (timer > 0);
}
关于ios - 显示一个u int。当值为0时我减去1会得到一个正数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22097689/