c - 在我的 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);
}
解决方案
在有趣的行之前插入打印 - 例如:
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
推荐阅读
- python - 无法使用 Seaborn 绘图
- c# - 多个 REST API 方法可以共享同一个控制器类吗?
- c++ - 在 WIFI_AP_STA 中设置 AP 和 STA 之间的路由
- node.js - npm 命令在 Windows 上的 Ubuntu 上的 Bash 上不起作用(WSL)
- perl - 如何在 Perl 中打印数组的完整内容
- javascript - nodejs/mongodb:将值传递给 exec 子进程
- c - 根据 git push 的日期自动包含程序版本
- malware - MISP 自动化键
- javascript - 三.JS Mesh位置平滑动画
- javascript - $_GET 的自定义网址