标题:关于printf的一个题,求解疑
只看楼主
findwind
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2015-8-21
 问题点数:0 回复次数:7 
关于printf的一个题,求解疑
#include<stdio.h>
#include<stdlib.h>
main()
{
    char a = 'A';
    int b = 20;
    printf("%d,%o",(a,a + b,b),a + 'a' - 'A',b);
}


#include<stdio.h>
#include<stdlib.h>
main()
{
    char a = 'A';
    int b = 20;
    printf("%d,%o",(a = a +1,a + b,b),a + 'a' - 'A',b);
}
为什么两个结果都是 20,141
第二个结果为什么不是20,142
我用的是codeblock
搜索更多相关主题的帖子: include 
2015-08-21 12:13
findwind
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2015-8-21
得分:0 
已找到答案
2015-08-21 12:56
luqiyihui
Rank: 2
等 级:论坛游民
帖 子:12
专家分:21
注 册:2015-8-11
得分:0 
楼主,能请教下第一个程序中printf中那段代码的意思吗?

"%d,%o",(a,a + b,b),a + 'a' - 'A',b

或有其他明白意思的人解释下,先谢!
新人,求学中……
2015-08-21 15:05
文江
Rank: 2
等 级:论坛游民
帖 子:77
专家分:20
注 册:2015-8-17
得分:0 
"%d,%o",(a,a + b,b),a + 'a' - 'A',b
这是什么意思呀
2015-08-21 16:42
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
得分:0 
printf("%d,%o",(a,a + b,b),a + 'a' - 'A',b);
要理解上面的这段代码, 最好去“stdio.h”中查看一下printf()函数的原型。

%d是按照10进制输出, %o好像是8进制吧,记得不是很清楚了。

另外, 逗号表达式的值是最后面的表达式的值,而且,逗号表达式的优先级最低, 所以那段代码等价于下面的这句:
printf("%d,%o",b,a+'a'-'A')
最后的那个b不输出。  

另外, 对于楼主的代码,在不同的编译器可能会得到不同的结果。 好像有的编译器可以得到142.  

代码测试环境:  WinXP+C-Free5.0.
2015-08-21 22:58
luqiyihui
Rank: 2
等 级:论坛游民
帖 子:12
专家分:21
注 册:2015-8-11
得分:0 
谢谢5楼的指点!
2015-08-22 15:26
findwind
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2015-8-21
得分:0 
回复 5楼 vvvcuu
确实是不同编译器会得到不同结果,不过我不知道具体原因
2015-08-22 20:57
findwind
Rank: 1
等 级:新手上路
帖 子:6
专家分:2
注 册:2015-8-21
得分:0 
回复 4楼 文江
http://wenda.                 这里面说的比较详细
2015-08-22 21:02



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-456617-1-1.html




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

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