关于c语言的问题:程序运行结果解析

img


为什么结果是1245?
在输入时是不是1 空格 2 。。这样吗?空格不是占了位置吗?
或者不用打空格,直接123,那么不是给了c1吗?
还有123回车不是直接运行了吗?怎么可能会出现45?

%c和getchar()都是一次读取一个字符,直接输入123(输入里没空格),然后回车,输入的前四个字符赋值到了c1到c4字符变量中,具体是:c1='1', c2='2', c3='3', c4='\n';

然后输入45678,然后回车,这里输入的前两个字符赋值到了c5和c6,后面的字符没有起作用,具体是:c5='4',c6='5',所以打印字符c1,c2,c5,c6,结果就是 :1245,然后一个换行, 测试如下:

#include <stdio.h>

int main(void){
    
    char c1,c2,c3,c4,c5,c6;
    // 这里%c用于从输入读取一个字符到相应字符变量 
    scanf("%c%c%c%c",&c1,&c2,&c3,&c4);
    
    c5=getchar();  // 从输入读取一个字符存入c5中 
    c6=getchar();  // 从输入读取一个字符存入c6中 
    putchar(c1);   // 打印字符变量c1 
    putchar(c2);  // 打印字符变量c2 
    printf("%c%c\n",c5,c6);  // // 以字符的形式打印字符变量c5和c6,然后打印一个换行 
    
    return 0;
     
} 

img