首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

printf("a") || printf("b") && printf("c");

2012-04-12 
printf(a) || printf(b) && printf(c)输出啥????printf(a) || printf(b) && printf(c)输出

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的标准???还是我理解错误,求指点迷津!


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

热点排行