你可以使用算术运算符在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