gpt4 book ai didi

C 运算符优先级,后增量编程问题

转载 作者:行者123 更新时间:2023-12-02 05:50:54 25 4
gpt4 key购买 nike

有人能解释一下为什么程序的输出是

0 1 1 3 1

void main(void)
{
int i=-1,j=0,k=1,l=2,m;

m=i++&&j++&&k++||l++;

printf("%d %d %d %d %d",i,j,k,l,m);

}

主要关心的是“为什么k不递增”。

仅供引用..我正在 VC++ 编辑器 Windows 7 32 位中编译程序。非常感谢。

最佳答案

大致:

为了评估i++&&j++,编译器首先评估i。结果是-1-1 存储在临时变量中。然后 i 递增。

因为 -1 不为零,编译器计算了 j,它是 0。编译器现在评估 -1 && 0,即 0。然后 j 递增。

此时,i = 0j = 1。剩余表达式:m=0&&k++||l++;

为了计算0&&k++,编译器注意到第一个操作数是0。结果必须为 0,因此编译器不会评估 kk++。剩余表达式:m=0||l++;

我希望你能完成剩下的工作。 :)

关于C 运算符优先级,后增量编程问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16561302/

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