methods: {
delete ()
{
if (!this.deleting) {
this.deleting = true
swal({
title: "Weet u het zeker?",
text: "Het is niet mogelijk deze handeling te herstellen!",
cancelButtonText: 'Stop',
type: "error",
showCancelButton: true,
confirmButtonColor: "#DD6B55",
confirmButtonText: "Ja, verwijder deze rit.",
closeOnConfirm: false
}, () => {
RideService.destroy(this.ride)
.then(() => {
swal({
title: "Rit succesvol verwijderd",
type: "success",
showCancelButton: false,
timer: 2000,
showConfirmButton: false
});
this.deleting = false;
this.$router.go('/administratie/ritten');
});
});
}
}
}
有人可以向我解释为什么在第一次循环之后,c的值会变成-128吗?
答案 0 :(得分:6)
因为您的编译器默认char
为signed char
。因此它的值范围是-128到127,递增127是触发环绕。如果您想避免这种情况,请明确,并将您的变量声明为unsigned char
。
请注意,要正确执行此操作,您还需要更改printf
;您是以签名int
值(%d
)打印的;要100%类型正确,您需要匹配类型,因此对于签名字符,格式代码应为%hhd
,对于无符号字符,格式代码应为%hhu
。由于varargs的推广规则,%d
会有效,但是一直使用%d
是一个坏习惯;当您使用unsigned
打印%d
时,您的系统可能会成功,但会显示较大的值为负值,让您感到困惑。
答案 1 :(得分:1)
尝试使用unsigned char计算最多255个
答案 2 :(得分:0)
这个问题的另一个简单解释
这种情况称为signed char的溢出。
unsigned char的范围是-128 to 127
。如果我们将指定一个大于127的值,那么如果我们将按照数字顺序移动顺时针方向,则变量值将更改为一个值。如果我们将分配一个小于-128的数字,那么我们必须逆时针方向移动。
当变量值为127时,它就可以了。但如果变量值增加1,则时钟增量也增加1,它的位置值-128。所以你的输出是-128。