大家看一看这个程序,为什么输入68回车运行结果为i=68,c=?输入 A回车运行结果为i=-858993460,c=A

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:47:17
#include <iostream.h>
#include <stdio.h>

void main()
{
int i;
char c;
scanf("%d",&i);
scanf("%c",&c);
cout<<"i="<<i<<endl;
cout<<"c="
<<(c>32?c:'?')<<endl;
}
怎么解决?

scanf("%d",&i);
scanf("%c",&c);

看这两句,说明 i 是一个数字, c 是一个字母

这个程序本来就应该有两个输入,而不只一个。 你输入68时,就只有i被赋值, c 则没有被赋值,这时候c为0. 再看这句
cout<<"c="
<<(c>32?c:'?')<<endl;

是说,c > 32 则输出 C 的值,否则输出?问号, 0当然小于32,输入问号,所以,输入68的时候就是 i =68, c = ?

当你输入A的时候, c被赋值,而i没有,i 没被赋值的时候默认值为-858993460,而A在ACSII码的十进制是71(好像),明显大于32,这时候不会输出问号,而是输入C,这时就是A了。

偷走2分,一同关注!