C语言问题

C语言问题求大神解答为什么选这个

第1个回答  2018-01-08
这和编译器的对于if语句条件的解析过程有关
对于(j++||k++)&&(i++) 要判别真假
按照&&的性质,就先要判别(j++||k++)的真假,
若真则还需要判别i++的真假
若假则i++的真假无需判断
对于(j++||k++)的真假
按照||的性质,就先要判别j++的真假,
若假则还需要判别k++的真假
若真则k++的真假无需判断
由于j++是运算表达式,则执行j++(j变为2),而执行成功结果恒为真
故k++的真假无需判断,即k++不会被执行(k还是2),且(j++||k++)为真
故需要判别i++的真假,
由于i++是运算表达式,则执行i++(i变为2),而执行成功结果恒为真
故(j++||k++)&&(i++) 为真,打印输出的i,j,k分别为2,2,2追问

哇!大神!谢谢

第2个回答  2018-01-08
因为或运算只要前半部分不为零,后半部分是什么值都无所谓,计算机也就没去计算后半部分追答

所以i,j进行了运算,k没有进行运算

本回答被提问者采纳
第3个回答  2018-01-08
因为If((j++ || K++) && i++)
这一步 || 这个是或者意思 只要满足一个就可以咯 所以在执行到 j++ 后就不会执行k++
而 && 是必须同时满足所以i++输出得到 222

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网