你可以使用算术运算符在0和1之间翻转
有没有一种方法,而不使用逻辑和位运算符,算术运算符,以0和1之间的整数之间翻转?
即。 “variables?=variables”将使variables1,如果它是0或0,如果它是一个
x = 1 - x
将在0和1之间切换。
编辑:我误解了问题,认为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]
假设它被初始化为0或1:
x = 1 - x
另一种方式:
x = (x + 1) % 2
只是有点多样化:
x = 1 / (x + 1); x = (x == 0); x = (x != 1);
不确定是否考虑==
和!=
是算术运算符。 可能不是,显然虽然他们在C中工作,但更强types的语言不会将结果转换为整数。
st0le的第二种方法喜剧变化
x = "\1"[x]
int flip(int i){ return 1 - i; };
另一种翻转一下的方法。
x = ABS(x - 1) // the absolute of (x - 1)
你可以简单地尝试这个
+(!0) // output:1 +(!1) // output:0