以下是一段代码,在表面上是相同的结果和逻辑,但在xp = yp时,会有不同的结果;

 1 void twiddle1(int *xp,int *yp)
 2 {
 3     *xp += *yp;
 4     *xp += *yp;
 5 }
 6 
 7 void twiddle2(int *xp,int *yp)
 8 {
 9     *xp += 2* *yp;
10 }

 

 

 

测试代码:

 1 /*
 2  ============================================================================
 3  Name        : test1.c
 4  Author      : Gump Yin
 5  Version     :
 6  Copyright   : Your copyright notice
 7  Description : Hello World in C, Ansi-style
 8  ============================================================================
 9  */
10 
11 #include <stdio.h>
12 #include <stdlib.h>
13 
14 void twiddle1(int *xp,int *yp)
15 {
16     *xp += *yp;
17     *xp += *yp;
18 }
19 
20 void twiddle2(int *xp,int *yp)
21 {
22     *xp += 2* *yp;
23 }
24 
25 int main(void) {
26     int a = 1,b =2;
27     twiddle1(&a,&b);
28     printf("twiddle1 xp != yp :a = %d;b= %d\n",a,b);
29     a = 1;b =2;
30     twiddle2(&a,&b);
31     printf("twiddle2 xp != yp :a = %d;b= %d\n",a,b);
32     int c = 3;
33     twiddle1(&c,&c);
34     printf("twiddle1 xp == yp :c = %d\n",c);
35     c = 3;
36     twiddle2(&c,&c);
37     printf("twiddle2 xp == yp :c = %d\n",c);
38     return EXIT_SUCCESS;
39 }
40 

 

 

测试结果:

1 twiddle1 xp != yp :a = 5;b= 2
2 twiddle2 xp != yp :a = 5;b= 2
3 twiddle1 xp == yp :c = 12
4 twiddle2 xp == yp :c = 9
5 

 

 

相关文章:

  • 2022-02-12
  • 2021-12-21
  • 2021-09-17
  • 2022-12-23
  • 2022-12-23
  • 2021-11-29
  • 2021-11-10
  • 2022-02-27
猜你喜欢
  • 2022-03-06
  • 2021-12-29
  • 2021-09-22
  • 2021-04-03
  • 2022-01-18
  • 2021-08-08
  • 2021-12-03
相关资源
相似解决方案