整型变量0和1相互切换

老秦鸭 / 2025-01-20 / 原文

今天在做项目时遇到一个问题,要对用户的状态进行切换。前端传过来的是一个整型变量status,1为启用,0为禁用。如何切换呢?

使用数学运算

status = 1 - status;

很明显,当status为1时,1-status为0;当status为0时,1-status为1。

使用位运算

status ^= 1; // 使用异或运算

^= 是位异或运算符,它会将 status 的每一位与其右侧的值进行异或运算。由于 0 ^ 1 == 1 且 1 ^ 1 == 0。

使用三目运算符

status = (status == 0) ? 1 : 0;

使用数组

int[] toggleMap = {1, 0};
status = toggleMap[status];

用一个映射数组来实现转换

总结

使用简单的数学运算或位运算底层实现比较快,而使用条件表达式或映射数组可读性更强。建议防御性编程🤡,你还有什么更好的办法实现吗?