C语言 w=3,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)||(b=y>z);后,a,b的值为?

[复制链接]
查看11 | 回复5 | 2013-1-15 15:28:20 | 显示全部楼层 |阅读模式
楼主你好, 这里我先跟你说一下这个或是什么意思,或的意思就是,两个条件只要满足一个就为真。这个跟数学中的或是一样的意思。A||B,那么A为真的话,不管B是否为真,这个表达式就为真, 现在跟你说一下这个表达式先看a=w>x,相当于a=(w>x),w>x显然为真,所以这个表达就为1,所以a=1,所以a=w>x就为真中间用的是或,所以后面的表达式就不会执行,没有意义,因为这个表达式已经为真了。 不懂可以追问...
回复

使用道具 举报

千问 | 2013-1-15 15:28:20 | 显示全部楼层
这整句是一个判断。 左右里面又有判断。w大于x 所以a等于一个正整数,值不一定,依据平台而定。楼上正解 。因为存在 ||
所以后面半句不会执行。所以b等于2 而不会等于0...
回复

使用道具 举报

千问 | 2013-1-15 15:28:20 | 显示全部楼层
|| 就是短路或,即(a=w>x)非零的时候,编译器就不会执行|| 后面的内容,因为没必要判断后面的真假,就能去判断(a=w>x)||(b=y>z)表达式的真假了。...
回复

使用道具 举报

千问 | 2013-1-15 15:28:20 | 显示全部楼层
选b解释:w>x不成立,所以a=0,那么&&运算符的左值(a=w>x)整体为false;因为&&的短路效果,就是左值为false,则不计算右侧表达式;所以b还是为最初赋值的6综上:a=0,b=6...
回复

使用道具 举报

千问 | 2013-1-15 15:28:20 | 显示全部楼层
a=1;b=0总的执行结果是1【简单的与或运算】...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行