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的标准???还是我理解错误,求指点迷津!
[解决办法]
优先级,并不是先计算,而是在分割表达式中的项(子表达式)时,确定它属于哪个更复杂的父表达式
这个式子整体上是或运算
而或运算的两个运算数是先左后右求值的,而且若左边为真,右边不再求值