|
30鱼币
- #include <stdio.h>
- int main()
- {
- char c;
- int i;
- scanf("%d",&i);
- c = getchar();
- putchar(c);
- printf("%d",i);
- printf("%d",i);
- //运行后我输入1a,却输出a11
- //1.字符和int型变量占用的不是同一块缓冲区?还是能区分变量类型?
- //2.只要不输入新的数据,字符缓冲区只保留最后一个字符变量?
- return 0;
- }
复制代码
本帖最后由 jackz007 于 2019-11-4 18:08 编辑
- #include <stdio.h>
- int main()
- {
- char c ;
- int d , i ;
- d = scanf("%d" , & i) ; // 键入 "1a" 回车,则键盘缓冲区中有 3 个字符:'1'、'a'、'\n',scanf() 拿到 '1',所以,i = 1
- c = getchar() ; // 键盘缓冲区剩下 2 个字符:'a'、'\n',getchar() 拿到 'a',所以,c = 'a'
- putchar(c) ; // 把字符 'a' 输出到屏幕上
- printf("%d" , i) ; // 把数字 1 输出到屏幕上
- printf("%d" , i) ; // 把数字 1 输出到屏幕上
- // 所以,最后屏幕上看到的就是 "a11"
- }
复制代码
键盘缓冲区只是保留从键盘输入的字符,统统是字符类型,至于和变量类型的关系,C 语言有相应的函数,比如,getchar()、scanf() 等等,可以把这些字符转化成需要的数据类型。
如果没有键盘输入,键盘缓冲区一般都是空的。
|
最佳答案
查看完整内容
键盘缓冲区只是保留从键盘输入的字符,统统是字符类型,至于和变量类型的关系,C 语言有相应的函数,比如,getchar()、scanf() 等等,可以把这些字符转化成需要的数据类型。
如果没有键盘输入,键盘缓冲区一般都是空的。
|