读书人

printf(quot;aquot;) || printf(quot;bquot;) amp;amp; print

发布时间: 2012-04-12 15:46:35 作者: rapoo

printf("a") || printf("b") && printf("c");输出啥????
printf("a") || printf("b") && printf("c");输出啥????


结果只输出a

为啥不输出abc

||运算中前面有个1后面就不会算我知道

但是&&的优先级比||高,不是应该先算&&吗?

另外如果我加了括号结果也是一样
printf("a") || (printf("b") && printf("c"));

括号的优先级最高,为啥不先输出bc???各种疑问,是不是VC6.0,GCC没有遵守ANSI C的标准???还是我理解错误,求指点迷津!


[解决办法]
优先级,并不是先计算,而是在分割表达式中的项(子表达式)时,确定它属于哪个更复杂的父表达式
这个式子整体上是或运算
而或运算的两个运算数是先左后右求值的,而且若左边为真,右边不再求值

读书人网 >C语言

热点推荐