为什么在这个程序中变量D的值没有改变?

我正在对这段代码进行手动分析。在第一次调用 F1 函数后,将等待变量 D 的值更改为 1,但将他的值保留在 2 上。此外,我注意到注释或不注释*Y--;都没有影响。

输出是:

8 9 5 2
5 9 5 2
15 13 4 2
5 13 4 2

第一次打印后,变量 D 不应该将您的值更改为 1 吗?

#include <stdio.h>

int F1 (int, int *);
int A = 3;
int B = 7;
int C = 4;
int D = 2;

void main(void)
{
  A = F1 (C, &D);
  printf("n %d %d %d %d", A, B, C, D);
  C = 3;
  C = F1(A, &C);
  printf("n %d %d %d %d", A, B, C, D);
}

int F1 (int X, int *Y)
{
  int A;
  A = X * *Y;
  C++;
  B += *Y;
  printf ("n %d %d %d %d", A, B, C, D);
  *Y--;
  return(C);
}

回答

这是一个优先级问题。

*Y--;

方法

*(Y--);

但你想要

(*Y)--;


以上是为什么在这个程序中变量D的值没有改变?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>