| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 247 人关注过本帖
标题:【已解决】请解释第三个printf,谢谢!
收藏  订阅  推荐  打印
fish7fish7
Rank: 2
等级:注册会员
威望:1
帖子:125
积分:1604
注册:2008-7-31
【已解决】请解释第三个printf,谢谢!

#include"stdio.h"
void main()
{
char c='k';
int i=1,j=2,k=3;
float x=3e+5,y=0.85;
printf("%d,%d\n",!x*!y,!!!x);                           /*0*0==0,!!0==0*/
printf("%d,%d\n",x||i&&j-3,i<j&&x<y);                   /*1||1&&1==1,1&&0==0*/
printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);            
}

[ 本帖最后由 fish7fish7 于 2008-8-3 16:42 编辑 ]
2008-8-3 12:09
elan1986
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:183
积分:2044
注册:2007-12-17

printf("%d,%d\n",i==5&&c&&(j=8),x+y||i+j+k);

C中的IF判断条件结果
用0,1表示的
0为假 1为真
&& 要同时判断前后条件 但是如果前面的为假 后面的就不必判断了 则为0
|| 这个就不必说了

(i==5&&c)&&(j=8) 先判断前一个括号 然后 再判断后一个
2008-8-3 12:25
fish7fish7
Rank: 2
等级:注册会员
威望:1
帖子:125
积分:1604
注册:2008-7-31

按楼上的说法应该输出1,1喽,可为什么输出的是0,1呢?
2008-8-3 12:32
hyzjie
Rank: 1
等级:新手上路
帖子:3
积分:132
注册:2008-7-30

i==5,等于而不是赋值,为假       (i==5)&&c&&(j=8)// 0&&1&&1;
2008-8-3 13:50
elan1986
Rank: 3Rank: 3
等级:中级会员
威望:2
帖子:183
积分:2044
注册:2007-12-17

呵呵 你还是没有懂的类
赋值和等于是不一样的
== 一般用来判断条件用的
= 一般用来赋值
2008-8-3 14:07
fish7fish7
Rank: 2
等级:注册会员
威望:1
帖子:125
积分:1604
注册:2008-7-31

我又看看书,终于明白了,楼上的两位都没说到点子上,实际的难点是==的优先级高于&&的优先级,不过还是很感谢两位的过目……
再次感谢!
2008-8-3 16:41
共有 246 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.062529 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved