gpt4 book ai didi

c - 为什么 “i” 变量在我的程序中没有递增两次?

转载 作者:太空狗 更新时间:2023-10-29 14:54:58 25 4
gpt4 key购买 nike

Why is "i" variable getting incremented twice in my program?

我修改了问题,但为什么输出不同。不应该一样吗?.?

代码:-

#include<stdio.h>
#define MAX(x,y) (x)>(y)?(x):(y)
void main(void)
{
int i = 10;
int j = 5;
int k = 0;
k == MAX(i++, ++j);
printf("%d %d %d",i,j,k);
}

输出:- 11 7 0

输出不应该是 12 6 0

最佳答案

在您的宏定义周围使用大括号:

#define MAX(x,y) ( (x)>(y)?(x):(y) )

扩展表达式(带有原始宏定义)

k == (i++)>(++j)?(i++):(++j);

分组为

(k == i++ > ++j) ? i++ : ++j;

i++ >++j 的计算结果为 1,它不等于 k(k 为 0) , 所以 ?: (++j) 的第三个操作数被评估。因此,i 递增一次,j 递增两次,并且 k 自初始化以来未更改,因此您的输出。

关于c - 为什么 “i” 变量在我的程序中没有递增两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25201817/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com