Ответ 1
x = 1 - x
Будет переключаться между 0 и 1.
Есть ли способ без использования логических и побитовых операторов, просто арифметических операторов, для переключения между целыми числами со значением 0 и 1?
т. "variable? = variable" сделает переменную a 1, если она 0 или 0, если она является одной
x = 1 - x
Будет переключаться между 0 и 1.
Изменить: я неправильно понял вопрос, думал, что OP может использовать оператор any
A Немногие... (игнорируйте их)
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, более строго типизированные языки не будут преобразовывать результат в целое число.
Изменение комедии на втором методе
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