c - 为什么这个算术表达式会产生这个结果?

标签 c

有人可以向我解释一下这个简单代码段的输出吗?

int i=7;
int j=3*i-- + 2;
printf("%d %d",i,j)

当我编译时,我得到 6,23

23是怎么来的?我以为是 3*7=21 减少到 20 加 2 是 22 不是 23?

最佳答案

int i = 7; /* i is 7 */
int j = (3 * (i--)) /* means 3 * 7 */ + 2; /* 3 * 7 + 2 = 23 */
/* i is now 6, because it was decreased by the postfix -- operator */
printf("%d %d", i /* 6 */, j /* 23 */);

关于c - 为什么这个算术表达式会产生这个结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7781506/

相关文章:

c - (练习 1.6 K&R)如何验证 getchar() != EOF 是 0 还是 1?

c - 这个 C 结构如何输出值?

c - 指向结构的指针数组

c - 不需要的跳转中断 MPLAB X IDE v.3.30

c - 如何直接从词法分析器返回 '+'(不带 token )

c - 如何在 ring0(内核模式)中使用 winapi 函数?

c - glibc 检测到 : realloc(): invalid next size

c - char * 数组转换为 char *

c - 删除 char* 中的第一个字符

c - 有多少个进程,具有 fork 功能?