我得到了一个定时器的无符号整数。但是当我在值为零时减去它的 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/