C语言的混合运算的顺序顺序怎么算

C语言中&&和||到底先算哪个?_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
C语言中&&和||到底先算哪个?
#include&stdio.h&
void main()
int a,b,c,x;
x=++a||++b&&++c;
printf(&%d,%d,%d,%d&,x,a,b,c);
输出的答案是1 2 1 1
c语言教科书后面的附录里写的&&比||的优先级高,网上也是这样说的,但这个程序是从左向右依次...
我有更好的答案
这样就没有警告了。如果不信你可以把&&和它的两个操作数括起来,我相信结果还是这样的,第二部分当然也就不会算了。关于计算机对表达式优先级的判断,如果你学了数据结构中栈的结构和应用你就明白了,如果为假,他才会算第二部分,我都是会加上括号的,我的编译器都会警告。不过像这种表达式,最好是手动加上括号,而不是靠计算机来自动识别优先级。像这样的,你这里第一部分就为真了,如果前一部分为真,他将停止运算,他会以||为界将表达式分为两部分,他会先算前一部分其实计算机是这样算的
采纳率:66%
++比||和&&的优先级都要高,如果优先级高就先执行的话,那么||和&&执行之前,全部数字(除了x)都已经是2了哟~毫无疑问的是a||b&&c是等价于a||(b&&c)的,但对于||来说,即使右边有一个括号,但||还是会先计算左边
这个要由C的预设||处理方式说明,||只要有一个成立就成立,所以++a后知道是非0就成立了,后面不执行。
优先级是没话说的,&&比||的优先级高,这个题可能涉及到了栈,我问过老师,老师让我找资料,下载我还不明白!
目测楼主没搞清楚为毛要从左开始算。。。。。。建议先看&&和||的定义在说。这个顺序不是优先级的问题,这是结合顺序的问题。。。。。。。。
逻辑的“与”和“或”,运算顺序上是同级的,谁在前面就先算哪个。
2条折叠回答
其他4条回答
为您推荐:
其他类似问题
您可能关注的内容
c语言的相关知识
换一换
回答问题,赢新手礼包浏览Q.yuhen的博客这篇文章
发现一个小问题,估计有类似想法的同学也有,所以记录一下。
问题在于这句话:
&很显然,依据 cdecl 规则,"printf(&, test(2), test(1))" 中的 printf 函数参数依次从右向左 "入栈"(暂且用这个说法)。因此 test(1) 被先调用,然后才是 test(2),上面的汇编代码也说明了这点。&
尽管事实是这样的,但这是一个有问题的说法。
cdecl的入栈顺序是没错的,这个入栈顺序是针对每个逗号分隔的表达式结果而言。也就是说对于每个结果一定是这样的顺序。但是表达式计算顺序(或者说每个逗号分割的函数调用)其实是没有规定的。这在K&R影印版第二版52页最末一段说的非常清楚,下面的f和g不一定谁先调用:
C, like most languages, does not specify the order in which the operands of an operator are evaluated. (exceptions are && || ?: and ",") for example x = f() + g();
另外在63页开始:
The commas that separate function arguments, variables in declarations, etc., are NOT comma operators, and do NOT guarantee left to right evaluation.
这也就是说逗号分隔的函数参数与逗号操作符是不一样的,不保证从左至右的计算顺序(当然也没有保证从右至左)。
注意这个evaluation,其实就是对test(2), test(1)的调用。如果这些调用有边界效应,在不同编译器、操作系统上可能会得到不同的结果。另外类似的问题有对在参数列表中,同一个变量调用++两次以上。
如果要保证求值顺序(注意不是求值结果的入栈顺序),只能用临时变量保存调用结果,或使用逗号操作,&& || :? 这样可以保证求值顺序的操作才行。
其实我在前面这篇博客已经提到了这个问题,只是看到这个提法再重申一次。&&
参考资料:
参考第七条
C陷阱与缺陷 3.7求值顺序
阅读(...) 评论()47.C语言运算符顺序_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
47.C语言运算符顺序
&&C语言运算符顺序资料
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩4页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢25被浏览4740分享邀请回答197 条评论分享收藏感谢收起32 条评论分享收藏感谢收起}

我要回帖

更多关于 同级运算按 的顺序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信