有没有办法不使用逻辑和按位运算符,只是算术运算符,在值为0和1的整数之间进行翻转?
即。 “变量?=变量”将使变量a 1(如果为0)或0(如果是1)
答案 0 :(得分:172)
x = 1 - x
将在0和1之间切换。
答案 1 :(得分:26)
编辑:我误解了这个问题,认为OP可以使用any
运算符
更多......(忽略这些)
x ^= 1 // bitwise operator
x = !x // logical operator
x = (x <= 0) // kinda the same as x != 1
不使用运营商?
int arr[] = {1,0}
x = arr[x]
答案 2 :(得分:18)
假设它被初始化为0或1:
x = 1 - x
答案 3 :(得分:16)
另一种方式:
x = (x + 1) % 2
答案 4 :(得分:5)
st0le第二种方法的喜剧变异
x = "\1"[x]
答案 5 :(得分:4)
int flip(int i){
return 1 - i;
};
答案 6 :(得分:4)
只是为了多种多样:
x = 1 / (x + 1);
x = (x == 0);
x = (x != 1);
不确定您是否将==
和!=
视为算术运算符。可能不是,显然虽然它们在C中工作,但更强类型的语言不会将结果转换为整数。
答案 7 :(得分:4)
翻转一下的另一种方法。
x = ABS(x - 1) // the absolute of (x - 1)
答案 8 :(得分:3)
你可以试试这个
+(!0) // output:1
+(!1) // output:0
答案 9 :(得分:0)
您可以使用简单的方法:
abs(x-1)
要不就:
int(not x)
答案 10 :(得分:-1)
我很惊讶的另一个可能的变体并不在这里 -
(x-1)*-1