黑马程序员技术交流社区

标题: IOS [打印本页]

作者: 李双良    时间: 2015-5-26 22:27
标题: IOS
#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的值为()


请问各路大神解惑授业啊?
作者: x331275955    时间: 2015-5-26 22:39
a=0,b=6吧,&&有左边不成立,不会继续运行右边了
作者: 蜡笔小炎    时间: 2015-5-26 22:43
我看都是 0
作者: woaidd99    时间: 2015-5-26 22:57
我看a=0 b = 6b吧
作者: 蜡笔小炎    时间: 2015-5-26 22:59
x331275955 发表于 2015-5-26 22:39
a=0,b=6吧,&&有左边不成立,不会继续运行右边了

是这样的逻辑?
作者: yi95392    时间: 2015-5-26 23:13
二楼正解!!!
作者: 七尺阳光    时间: 2015-5-27 00:14
关键在于逻辑与&&短路问题.每次看到逻辑运算符&& ||都要注意.&&前面为假,后面表达式就不会再执行判断.||前面表达为真,则后面表达式就不需要判断执行
作者: 星空眼泪    时间: 2015-5-27 00:40
#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;
}
作者: 我是一个小菜鸟    时间: 2015-5-27 01:26
a = 0,b = 6; 前面a = w>x    w>xb不成立返回0,所以a = 0,然后0&&XXX就是与短路,0&&任何数最后都返回0,所以后面的b=y>z不用考虑,直接略过了。 彬哥专门讲了几遍逻辑与和或的短路问题,大师也教你了破法,看来你上课没听讲啊!
作者: heyuze    时间: 2015-5-27 09:37
a=0,b=6;   
若"&&"前面表达式为假,就自动忽略后面的表达式,后面的"b=y>z"则不执行。
作者: 鬼崇祟    时间: 2015-5-27 19:56
有意思   这样都可以
作者: 小龙女的萝卜    时间: 2015-5-27 20:30
二楼正解啊,
作者: 张晓珊    时间: 2015-5-27 20:33
a=0,b=6,是这样不?
作者: 这是829    时间: 2015-5-27 21:18
围观学习!
作者: lyricdon    时间: 2015-5-27 21:40
a=0 ,b =6, 因为&&的短路原因,一假全假,所以右边就不会运行了
作者: 李双良    时间: 2015-5-27 22:11
星空眼泪 发表于 2015-5-27 00:40
#include
int main()
{

谢谢 大神!
作者: 李双良    时间: 2015-5-27 22:15
我是一个小菜鸟 发表于 2015-5-27 01:26
a = 0,b = 6; 前面a = w>x    w>xb不成立返回0,所以a = 0,然后0&&XXX就是与短路,0&&任何数最后都返回0, ...

其实我是在检查你!看你会多少!
作者: 李双良    时间: 2015-5-27 22:19
x331275955 发表于 2015-5-26 22:39
a=0,b=6吧,&&有左边不成立,不会继续运行右边了

谢谢 大神!
作者: Asskicker    时间: 2015-5-28 09:16
这是运算符的优先级的问题吧,&&运算,左边如果是对的,右边就不执行了。a=0 b没变
作者: 15578797612    时间: 2015-5-28 09:45
我也想问问,我也不知道
作者: yuang4074    时间: 2015-5-28 14:35
实践是检验真理的唯一标准

QQ图片20150528143727.png (15.98 KB, 下载次数: 38)

实践是检验真理的唯一标准

实践是检验真理的唯一标准

作者: hi虚无缥缈    时间: 2015-5-28 18:06
看看运算符优先级,这部分还算是比较简单点的。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2