首页 > 解决方案 > 在我的 c 代码中,当我打印 k 时,它的打印 -4 但它必须是 -3 ?

问题描述

你可以看到在我的代码中我只写int了 k 并且它的打印k=-4。为什么不是-3,因为k它是一个整数,所以它会从-3.53 存储-3。

{
int a,b,c,k;
int *x, *y, *z;
a=10, b=15, c=-5;
x = &a;
y =  &b;
z= &c;
*z= *z +1;
*x = *x + (-2);
k = ((*z)++) - ((*x) / (*y));
printf("%d %d %d %d",*x, c, *z, k);
}

标签: c

解决方案


在有趣的行之前插入打印 - 例如:

printf("%d %d %d\n", *z, *x, *y);
k = ((*z)++) - ((*x) / (*y));

输出:

-4 8 15

由于*x小于*y整数除法((*x) / (*y))将给出零。所以计算只是:

k = ((*z)++)

++是 的增量*z。即:*z返回的值,然后 *z递增。因此k将获得价值-4*z成为-3


推荐阅读