#include<stdio.h> int main(){ int a; char b; scanf("%d %d",&a, &b); printf("%d %d",a, b); }输入:123 123 为什么输出:0 123
时间: 2024-10-12 15:14:17 浏览: 22
#include <stdio.h>
4星 · 用户满意度95%
在这段C语言代码中,`scanf`函数用于从标准输入读取整数(a)和字符(b),但是它的第二个和第三个参数都是指向整型变量`&a`和`&b`。当你输入"123 123"时,由于`%d`会匹配整数,所以前两个数字"123"会被正确读入并存储到变量a中,对应的`&a`是一个整型指针。
然而,对于字符部分,"123"中的`123`不是有效的字符输入。`%d`格式控制符只能识别整数,遇到非数字字符会停止解析,并将剩余的字符视为未处理的空格。因此,字符部分实际上没有被读入,`b`保持其默认值(通常是ASCII码中的某个特殊字符,如空格或换行符),而`scanf`返回的是已经读取到的项目的数量(在这个例子中是1,因为只读了一个整数),通常用作错误检查。
所以,当打印`a`和`b`时,你会看到`123 0`,第一个是读取到的整数值,第二个是字符变量的默认初始值(这里显示为0,实际上是空格)。如果想读取字符,应该使用`%c`格式控制符代替`%d`:
```c
scanf("%d %c", &a, &b);
```
这样,输入"123 123"后,b就会得到字符 '1'(假设ASCII值)而不是0。
阅读全文