A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

李双良

中级黑马

  • 黑马币:19

  • 帖子:68

  • 精华:0

© 李双良 中级黑马   /  2015-5-26 22:27  /  2276 人查看  /  23 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

#include<stdio.h>
    int main()
{
int a=5,b=6,w=1,x=2,y=3,z=4;
(a=w>x)&&(b=y>z);
    return 0;         
}
执行以下语句后a的值为(),b的值为()


请问各路大神解惑授业啊?

23 个回复

倒序浏览
a=0,b=6吧,&&有左边不成立,不会继续运行右边了
回复 使用道具 举报
我看都是 0
回复 使用道具 举报
我看a=0 b = 6b吧
回复 使用道具 举报
x331275955 发表于 2015-5-26 22:39
a=0,b=6吧,&&有左边不成立,不会继续运行右边了

是这样的逻辑?
回复 使用道具 举报
二楼正解!!!
回复 使用道具 举报
关键在于逻辑与&&短路问题.每次看到逻辑运算符&& ||都要注意.&&前面为假,后面表达式就不会再执行判断.||前面表达为真,则后面表达式就不需要判断执行
回复 使用道具 举报
#include<stdio.h>
int main()
{
    int a=5, b=6, w=1, x=2, y=3, z=4;
    // w>x 等价于 1>2,表达式为假,所以表达式等于0 ,所以结果a=0.&&只要一个不成立那么就不会执行后面的语句了,所以b还是等于初始值的6
    (a=w>x)&&(b=y>z);
    return 0;
}
回复 使用道具 举报
a = 0,b = 6; 前面a = w>x    w>xb不成立返回0,所以a = 0,然后0&&XXX就是与短路,0&&任何数最后都返回0,所以后面的b=y>z不用考虑,直接略过了。 彬哥专门讲了几遍逻辑与和或的短路问题,大师也教你了破法,看来你上课没听讲啊!
回复 使用道具 举报
a=0,b=6;   
若"&&"前面表达式为假,就自动忽略后面的表达式,后面的"b=y>z"则不执行。
回复 使用道具 举报
有意思   这样都可以
回复 使用道具 举报
小龙女的萝卜 来自手机 中级黑马 2015-5-27 20:30:24
12#
二楼正解啊,
回复 使用道具 举报
a=0,b=6,是这样不?
回复 使用道具 举报
围观学习!
回复 使用道具 举报
a=0 ,b =6, 因为&&的短路原因,一假全假,所以右边就不会运行了
回复 使用道具 举报

谢谢 大神!
回复 使用道具 举报
我是一个小菜鸟 发表于 2015-5-27 01:26
a = 0,b = 6; 前面a = w>x    w>xb不成立返回0,所以a = 0,然后0&&XXX就是与短路,0&&任何数最后都返回0, ...

其实我是在检查你!看你会多少!
回复 使用道具 举报
x331275955 发表于 2015-5-26 22:39
a=0,b=6吧,&&有左边不成立,不会继续运行右边了

谢谢 大神!
回复 使用道具 举报
这是运算符的优先级的问题吧,&&运算,左边如果是对的,右边就不执行了。a=0 b没变
回复 使用道具 举报
我也想问问,我也不知道
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马