gpt4 book ai didi

c - 这三个问题相似但不相同。如何?

转载 作者:行者123 更新时间:2023-11-30 21:43:02 25 4
gpt4 key购买 nike

Q1:输出?

int main() { 
int i=-3, j=2, k=0, m;
m = ++i && ++j || ++k;
printf ("%d %d %d %d", i,j,k,m);
return 0;
}

Q2:输出?

int main() { 
int i=-3, j=2, k=0, m;
m = ++i || ++j && ++k;
printf ("%d %d %d %d", i,j,k,m);
return 0;
}

Q3:输出?

int main() { 
int i=-3, j=2, k=0, m;
m = ++i && ++j && ++k;
printf ("%d %d %d %d", i,j,k,m);
return 0;
}

请解释一下这个操作是如何工作的?

最佳答案

bool 运算从左到右处理(不带括号...)。一旦结果修复,它就会停止评估其余条件。这意味着:

false && (AND) -> is always false, no matter what
true || (OR) -> is always true, no matter what

first case stops @ || (because true && true || doesn't matter)
second case stops @ || (because true || doesn't matter && how much && operations ...)
third case stops @ end (because true && true && -> still have to check because if there would be false, the whole expression would be false)

因为它在特定点停止,所以不会对剩余的内容执行++ 运算符。

这也是为什么你必须小心做诸如 incr、decr 或某种条件下的事情的原因......

关于c - 这三个问题相似但不相同。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17313726/

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