为什么在这个程序中变量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)--;