|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 一个小问题,搞不明白,求解!
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
983
人关注过本帖
标题:
一个小问题,搞不明白,求解!
只看楼主
加入收藏
杨云山
等 级:
新手上路
帖 子:1
专家分:0
注 册:2012-12-22
结帖率:
0
楼主
收藏
已结贴
√
问题点数:20 回复次数:11
一个小问题,搞不明白,求解!
#include <stdio.h>
main()
{
int a = -1, b = 1, k;
if ( (++a < 0) &&! (b--<=0))
printf ("%d
%d", a, b);
else
printf ("%d
%d", b, a);
}
为什么结果会是:1 0 ?
想了好久、、求助啊
搜索更多相关主题的帖子:
include
2012-12-22 23:06
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
2
楼
收藏
得分:2
因为
++a 后 a = 0了,这个时候(++a < 0) 为假,这个时候
!(b--<=0)) 是不会执行了的,所以这个时候 a = 0 b 还是定于1
printf ("%d
%d", b, a); 就是 1 0 了
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-22 23:13
举报帖子
使用道具
赠送鲜花
yuccn
来 自:何方
等 级:
版主
威 望:
167
帖 子:6815
专家分:42393
注 册:2010-12-16
第
3
楼
收藏
得分:0
if (a && b ) 如果a为假,是不会对b进行判断了的,因为无论b为真假,这个if都是假了的,
if (a || b )如果a 为真,是不会对b进行判断了的,无论b真假 这个if都是真了的
我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2012-12-22 23:14
举报帖子
使用道具
赠送鲜花
azzbcc
来 自:江西财经大学
等 级:
贵宾
威 望:
81
帖 子:3293
专家分:12919
注 册:2012-11-4
第
4
楼
收藏
得分:2
++a 后,a值为0,不满足a < 0,然后&&,短路,后面不判断
if为假
输出b,a,也就是1,0
[fly]存在即是合理[/fly]
2012-12-22 23:15
举报帖子
使用道具
赠送鲜花
姻脂梦
等 级:
侠之大者
帖 子:264
专家分:424
注 册:2012-7-3
第
5
楼
收藏
得分:2
版主正解
2012-12-22 23:16
举报帖子
使用道具
赠送鲜花
love云彩
来 自:青藏高原
等 级:
贵宾
威 望:
53
帖 子:3663
专家分:11416
注 册:2012-11-17
第
6
楼
收藏
得分:2
楼主你没有注意到关系运算符与逻辑运算符的优先级啊,回去看看书你就知道了,关系运算符的优先级高于逻辑运算符,在fi的语句中,if()的括号中,如果返回值为0,表示错误,不执行if后面的语句,如果是1则执行if后面的语句,++a的意思是,先将a的值+1,此时a已经等于0(注意a值已经是改变了),然后在与0比较,结果式子是错误的,因为0<0是错误的,而(b--<=0)这个式子中的b,楼主定义b并初始化的时候b=1,b--只是在b--<=0这个判断式中起作用的,并不改变b的初始值。
思考赐予新生,时间在于定义
2012-12-22 23:46
举报帖子
使用道具
赠送鲜花
qq383264679
等 级:
论坛游侠
帖 子:155
专家分:130
注 册:2012-1-19
第
7
楼
收藏
得分:2
if ( (++a < 0) &&! (b--<=0))
这里出现了短路现象,当++a < 0时候,由于表达式错误,则没有必要计算余下的表达式了,所以整个表达式为false。
++a 为先+
后 计算
所以 a = 0
b 没变化。
2012-12-22 23:52
举报帖子
使用道具
赠送鲜花
love云彩
来 自:青藏高原
等 级:
贵宾
威 望:
53
帖 子:3663
专家分:11416
注 册:2012-11-17
第
8
楼
收藏
得分:0
版主正解啊,小弟解释得有点啰嗦了,还是错误的呢,我看完书之后才知道的
思考赐予新生,时间在于定义
2012-12-22 23:58
举报帖子
使用道具
赠送鲜花
小小战士
等 级:
蜘蛛侠
威 望:
1
帖 子:569
专家分:1313
注 册:2012-11-3
第
9
楼
收藏
得分:2
&&和||是从左到右,一假则假,一真则真,其后忽略
小小战士,战士中的战斗机!
2012-12-23 02:19
举报帖子
使用道具
赠送鲜花
唐兵
来 自:四川泸州合江
等 级:
论坛游民
帖 子:150
专家分:12
注 册:2012-12-1
第
10
楼
收藏
得分:2
if(a>b&&c>d).....
如果a>b为假则不执行c>d
一个人如果不比自己一把,你永远不知道自己究竟有多厉害
2012-12-23 13:20
举报帖子
使用道具
赠送鲜花
12
1/2页
1
2
快速回复:
一个小问题,搞不明白,求解!
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.029297 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved