作业帮 > 综合 > 作业

关于C语言里getchar函数的问题?逻辑想不通啊、. 既然是顺序计算,等于号具有右极限

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/09/19 17:33:11
关于C语言里getchar函数的问题?逻辑想不通啊、. 既然是顺序计算,等于号具有右极限
/*程序如下
#include
void main()
{
char c1,c2,c3,c4,c5,c6;
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
c5=getchar(); c6=getchar();
putchar(c5); putchar(c6);

}
*/
既然是顺序计算,等于号具有右极限
那么输出的应该是前2个字符
为什么我输入123456789时
输出的是56呢
scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
这个会输入4个字符
c5=getchar(); c6=getchar();
这个会输入2个字符
所以你的c1-c6依次是123456
然后你输入出的是c5和c6
所以输出的是56
这个很正常啊······,我不晓得你描述的等于号具有右极限是啥意思,我只晓得按照你的程序流程是这么运行的···,写在前面的语句段先运行··········依次往下执行,这个已经和你的等于号神马的没有关系了·······
再问: c5=getchar(); c6=getchar(); 这两个已经定义了c5和c6了呀,按逻辑来说应该是第一个字符和第二个字符,我也知道,定义上说:把输入的字符赋予一个字符变量,构成赋值语句,可是你得有个先后顺序吧,语句,应该先执行getchar(),然后把getchar()的值给了c5,现在怎么是c5的值给了getchar()了呢,这不是和等于号的右极限(比如6=m)矛盾了吗?
再答: 好吧,所谓的先后顺序···也必须得遵循程序的运行, scanf("%c%c%c%c",&c1,&c2,&c3,&c4); c5=getchar(); c6=getchar(); 你是这么写的,所以程序会先运行scanf这段····,c1-c4赋值完以后才会运行下一段 你说的:把输入的字符赋予一个字符变量,构成赋值语句 c5=getchar();中getchar()确实是先执行的,先获取了一个值,在这里是5,然后吧这个值给了c5 但是我不懂你说的c5的值给了getchar()是什么意思? c5之前你只定义了,并没有赋值,c5=getchar();是这句给c5赋值的········按照你说的等于号的右极限,这里简化下来还是c5=5;······· 你是不是少写了一段或者是理解出差错了??