对于int a 和 int b 可以使用下面的代码 互换a和b的值
void function(inta, int b){ a=a+b; b=a-b; a=a-b; }
如果交换 两个char类型,该怎么办喃?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
char其实就是int呀
#include void swap(char *a, char *b) { *a = *a ^ *b; *b = *a ^ *b; *a = *a ^ *b; } int main() { char a = 'x'; char b = 'y'; printf("交换前: a='%c', b='%c'.\n", a, b); swap(&a, &b); printf("交换后: a='%c', b='%c'.\n", a, b); return 0; }
输出
交换前: a='x', b='y'. 交换后: a='y', b='x'.
一般的
char型实际上是byte型,只有一个字节,因此必须考虑溢出的问题,不能用加法。当然,实质上int型也不能用加减法这样来交换,用位异或是个通用的办法。
void main() { char a = 'x'; char b = 'y'; a ^= b; b ^= b; a ^= b; std::cout 特殊的如果你在windows平台下的话,可以使用内置函数void main() { char a = 'x'; char b = 'y'; b=InterlockedExchange8(&a, b); std::cout 延伸的你可以使用汇编来直接自行完成void main() { char a = 'x'; char b = 'y'; __asm { mov al,a xchg al,b mov a,al } std::cout
特殊的
如果你在windows平台下的话,可以使用内置函数
void main() { char a = 'x'; char b = 'y'; b=InterlockedExchange8(&a, b); std::cout 延伸的你可以使用汇编来直接自行完成void main() { char a = 'x'; char b = 'y'; __asm { mov al,a xchg al,b mov a,al } std::cout
延伸的
你可以使用汇编来直接自行完成
void main() { char a = 'x'; char b = 'y'; __asm { mov al,a xchg al,b mov a,al } std::cout
char其实就是int呀
输出
一般的
char型实际上是byte型,只有一个字节,因此必须考虑溢出的问题,不能用加法。
当然,实质上int型也不能用加减法这样来交换,用位异或是个通用的办法。