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

时间:2021-05-25 22:47:24

标签: c

我正在对这段代码进行手动分析。在第一次调用 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);
}

1 个答案:

答案 0 :(得分:6)

这是一个 precedence 问题。

*Y--;

意思

*(Y--);

但是你想要

(*Y)--;