C语言的输出问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 19:28:53
例 int x;
char ch;
scanf(“%d”,&x);
scanf(“%c”,&ch);
printf(“x=%d,ch=%d\n”,x,ch);
执行:123
输出:x=123,ch=10

为什么结果是这样的

我不知道你希望的输出结果是什么。
你调用了两条从标准输入输出系统读入数据的函数,第一个以整数形式读入,第二个字符类型,而你在执行的时候就传递了一个参数,然后又输入了一个回车(回车的ASCII码是10)。

当你输出的时候,两个参数都按照整数类型输出,一个会输出你输入的数字,也就是123,另外一个输出ch的ASCII码。如果你输出的时候用ch=%c\n,你会看到
x=123,ch=(回车)

整数类型和字符类型在存储上是没有太大区别的,整数的识别范围是从-128到127,字符型的识别范围是0-255(ASCII码之后就会是一些特殊字符,输出的话会是乱码)。如果一个变量,存储的整型数据为13,那么如果他表示一个整型,就是13,表示一个字符型,就是字符换行"\r"

跟据你的Printf的参数,可以知道,首先ch有溢出,而且又输出为其值对应的ASCII值。所以出现这样的结果。