84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
对于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型也不能用加减法这样来交换,用位异或是个通用的办法。