C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了逻辑运算符的基本编程练习大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的书中有一个问题:
#include<stdio.h>
void main()
{
    int a=5,b=-7,c=0,d;
    d = ++a && ++b || ++c;
    printf("\n%d%d%d%d",a,b,c,d);
}

这个问题问我代码输出是什么.我跑了,屏幕上的结果是6-601.我理解为什么a = 6和b = -6,但我不明白为什么c = 0和d = 1?

解决方法

我相信你已经得到了答案,但只是逐步详细说明,让我在这里再补充一点.首先,引用&& amp;的特性.和||操作符,分别来自C11标准,章节§6.5.13和§6.5.13,

(一世)

(II)

他们都保证从左到右的评估.所以,比较你的代码,

d = ++a && ++b || ++c;

它发生了

d = ((++a && ++b) || ++c );

评估为

d = (( 6 && ++b ) || ++c);

然后

d = ( ( 6 && (-6) ) || ++c);

现在在上面的阶段,(I)已经实现了,它归结为

d = ( 1 || ++c);

现在,遵循已经满足(II)的重点,因此没有进一步评估||的RHS操作数执行(即,不评估C),并且它看起来是d = 1并且最终结果1存储在d中.

那就是,a == 6,b == -6,c == 0和d == 1.

如此,void main()应该改为int main(void),至少要符合标准.

大佬总结

以上是大佬教程为你收集整理的逻辑运算符的基本编程练习全部内容,希望文章能够帮你解决逻辑运算符的基本编程练习所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。