| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4734 人关注过本帖
标题:为什么a&&b的结果会是这样?
只看楼主 加入收藏
yyasd
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-31
收藏
 问题点数:0 回复次数:10 
为什么a&&b的结果会是这样?

#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}

结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?

搜索更多相关主题的帖子: 结果 amp printt main PRINTT 
2006-09-17 15:27
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
++a为真,后边表达式不用计算

2006-09-17 16:15
honkerman
Rank: 2
等 级:新手上路
威 望:4
帖 子:3078
专家分:0
注 册:2006-8-25
收藏
得分:0 
printt(a,b,c);没见过,谁能讲讲~

" target="_blank">God Bless You[GLOW=255,#00ff00,2]My Friends![/GLOW]
2006-09-17 17:17
ww84020209
Rank: 1
等 级:新手上路
帖 子:190
专家分:0
注 册:2006-8-21
收藏
得分:0 
以下是引用honkerman在2006-9-17 17:17:01的发言:
printt(a,b,c);没见过,谁能讲讲~

宏展开


2006-09-17 17:18
yyasd
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-31
收藏
得分:0 
a=b=c=2
++a||++b&&++c;(这是面的++b&&++c)是怎么计算得出2的结果的&&前后是什么样的关系?
2006-09-17 17:47
yyasd
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-31
收藏
得分:0 
以下是引用ww84020209在2006-9-17 16:15:58的发言:
++a为真,后边表达式不用计算

是这样啊谢谢您的回答!那这样的话...下面的应该是这样的结果吧


a=b=c=2;
++a&&++b||++c printt(a,b,c);

a=3 b=3 c=2 (是这样的结果吧)!

这样的话.语句里只有||符号后面的结果不用计算是吧?

2006-09-17 17:52
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
收藏
得分:0 
以下是引用yyasd在2006-9-17 15:27:06的发言:

#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}

结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?

编译器执行逻辑运算时,判断||前为真,则不执行||后的运算,&&前为假则不执行&&后的运算.

那个是宏定义,哪个地方出现了就将其后面的字符串替换.


倚天照海花无数,流水高山心自知。
2006-09-17 18:12
yyasd
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2006-8-31
收藏
得分:0 
吼吼。。。高兴啊。。连版主也来帮解。。谢谢ww84020209跟nuciewth
2006-09-18 09:40
C语言学习者
Rank: 4
等 级:贵宾
威 望:13
帖 子:1278
专家分:0
注 册:2006-9-26
收藏
得分:0 
以下是引用yyasd在2006-9-17 15:27:06的发言:

#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);
main()
{
int a,b,c;
a=b=c=2;
++a||++b&&++c; printt(a,b,c);
}

结果为什么是
a=3 b=2 c=2 呢?这个&&是怎么运算的? PRINTT是……?

输出为a=3 b=2 c=
这个条语句#define printt(a,b,c) printf("a=%d\tb\%d\tc=%\n",a,b,c);这里少加d,今人产生误会.


谁有强殖装甲第二部,可以Q我460054868
2006-09-30 17:03
sunyuantz
Rank: 1
等 级:新手上路
威 望:1
帖 子:407
专家分:0
注 册:2006-3-20
收藏
得分:0 
这个东西其实和离散数学有关,最近我想写一篇关于离散于c的文章

我不是名人,所以不要签名。等哪天我成名人了......你都认识我了还要签名干嘛!
2006-10-01 11:35
快速回复:为什么a&&b的结果会是这样?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018285 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved