c言语交流两个数的值
顺序中有两个数a,b,个中a=4,b=5,如今愿望交流两个数的值,使得a=5,b=4.
引荐课程:C言语教程
要领1: 运用一个临时变量来举行保留,这应当也是人人最轻易想到的要领
参考代码:
#include <stdio.h> int main() { int a = 4; int b = 5; int nTemp; printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); nTemp = a; a = b; b = nTemp; printf("----------------------------------我是分割线------------------------------------\n"); printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
运转效果:
要领2:运用加减法来举行交流,这类要领实际上就是先把a+b的效果临时先保留在变量a中,然后经由过程这转变后的a和原始的b举行减法就能够获得交流后的b,然则这类要领有一个缺点,就是a和b都是int范例,a+b的效果能够越界。
参考代码:
#include <stdio.h> int main() { int a = 4; int b = 5; printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a = a + b; b = a - b; a = a - b; printf("----------------------------------我是分割线------------------------------------\n"); printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
运转效果:
要领3:运用乘除法来举行交流,这类要领和要领2相似,只是用a*b替代a+b放在a中暂存,背面思绪一样,这类要领有着和要领2一样的缺点,就是越界题目,而且越发轻易越界。
参考代码:
#include <stdio.h> int main() { int a = 4; int b = 5; printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a = a * b; b = a / b; a = a / b; printf("----------------------------------我是分割线------------------------------------\n"); printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
要领4:运用异或的要领来举行交流,这类要领不存在之前越界的缺点,是一种很圆满的要领,这类要领重要利用了异或的特征a^b的值先保留到a,由于a^b^b=a所以能够顺利完成交流。
参考代码:
#include <stdio.h> int main() { int a = 4; int b = 5; printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a = a ^ b; b = a ^ b; a = a ^ b; printf("----------------------------------我是分割线------------------------------------\n"); printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
要领5:运用移位的要领,把本来的int范例的a,把a的值拆分红高16位和低16位,相当于多了16位的暂存空间能够周转,然则此要领的缺点也不言而喻,就是假如被赋值的a或许b超过了16位,这类要领就会发作毛病。
参考代码:
#include <stdio.h> int main() { int a = 32123; int b = 12345; printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); printf("\n"); a <<= 16; a |= b; b = a >> 16; a = a & 0xffff; printf("----------------------------------我是分割线------------------------------------\n"); printf("交流前a,b的值为:\n"); printf("a=%d\n", a); printf("b=%d\n", b); return 0; }
运转效果:
以上就是c言语交流两个数的值的细致内容,更多请关注ki4网别的相干文章!