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