| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1091 人关注过本帖
标题:求教关于getchar的问题
只看楼主 加入收藏
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
 问题点数:0 回复次数:10 
求教关于getchar的问题
程序代码:
#include<stdio.h>

int main()
{
    printf("%c,%c,%c,%c\n",getchar(),getchar(),getchar(),getchar());
}
如果我输入:abcd
为什么输出的是dcba?
2011-11-01 22:50
j36160085
Rank: 1
等 级:新手上路
帖 子:5
专家分:4
注 册:2010-9-1
收藏
得分:0 
c语言输出函数 里面是从右向左运算的 也就是说如果getchar不过不写在print里面就行
2011-11-01 23:01
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
得分:0 
原来如此,受教了
2011-11-01 23:38
飞扬冲天
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:86
专家分:122
注 册:2011-10-21
收藏
得分:0 
原来是这样
2011-11-01 23:52
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
得分:0 
我仔细想了下,还是有问题:
如果输出是从右向左的输出,那么
int a=1,b=2;
printf("a=%d,b=%d\n",a,b)
的输出结果不就应该是:
b=2,a=1了么?
但实际结果仍然是:
a=1,b=2啊

[ 本帖最后由 windofland 于 2011-11-1 23:55 编辑 ]
2011-11-01 23:54
非死亡!
Rank: 8Rank: 8
来 自:四川
等 级:蝙蝠侠
帖 子:179
专家分:760
注 册:2011-10-31
收藏
得分:0 
printf()从左到右执行,但是""内的不是从右到左啊.
更准确的说是:printf()先从可选参数内从右到左运算(就是""后的数),再和""内的一一对应;如果可选参数个数大于""内的就不输出多的可选参数,根本是看"%"的个数.注意是可选,就是说:printf()不只是可以输出指定数.他还有高级运用的.对此我也不清楚.
程序代码:
#include<stdio.h>

int main()
{   char a,b,c,d,e;
    printf("%c,%c,%c,%c\n",a=getchar(),b=getchar(),c=getchar(),d=getchar(),e=getchar());
    printf("%c%c%c%c",a,b,c,d);
}

能力 技巧
2011-11-02 13:27
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
得分:0 
请问是怎么个一一对应呢?
程序代码:
#include<stdio.h>

int main()
{   char a,b,c,d,e;
    printf("a=%c,b=%c,c=%c,d=%c,e=%c\n",a=getchar(),b=getchar(),c=getchar(),d=getchar(),e=getchar());
    printf("a=%c,b=%c,c=c%,d=c%,e=%c\n",a,b,c,d,e);
}
我对代码稍微改了下,只是添加了原样输出的字符,其余的都不变
生成的结果如下:
abcde
a=e,b=d,c=c,d=b,e=a
a=e,b=d,c=c,d=b,e=a
Press any key to continue
printf中""输出列表是从右往左运算后再与""中的格式控制的话,即a=%c对应e=getchar(),b=%c对应d=getchar()……以此类推,是不是这么理解?


[ 本帖最后由 windofland 于 2011-11-2 23:06 编辑 ]
2011-11-02 22:56
niu91
Rank: 2
等 级:论坛游民
帖 子:64
专家分:44
注 册:2009-7-25
收藏
得分:0 
入栈从右向左,运算也就从右向左。
i=0;
printf("%d%d",i,i++);//输出1 0
这个题同样的道理
2011-11-02 23:14
我不是大虾
Rank: 2
等 级:论坛游民
帖 子:38
专家分:29
注 册:2011-10-26
收藏
得分:0 
这应该是通过getchar()输入的数据的保存方法的问题吧,堆栈
2011-11-02 23:32
windofland
Rank: 2
等 级:论坛游民
帖 子:27
专家分:12
注 册:2010-12-1
收藏
得分:0 
那是不是说这个是由于堆栈的方法引起的,并不是有printf引起的?
2011-11-02 23:55
快速回复:求教关于getchar的问题
数据加载中...
 
   



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

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