c语言基本问题!

来源:百度知道 编辑:UC知道 时间:2024/05/21 10:35:12
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
printf("%d\n",a);
}
为什么这个程序,在输入数据时,我输入字母和符号会输出-858993460啊,
我知道我定义的类型是整形的,但我想让程序在我的控制之下,怎样写,能阻止这样的情况啊.谢谢!
#include <stdio.h>
void main()
{
int a;
a=-0;
scanf("%d",&a);
if(a==-0)
printf("你输入的数据错误,请确认\n");
printf("%d\n",a);
}

我想你用的是32位的编译器
所以这个数比-32768要小
这样的话可以这样写
#include <stdio.h>
void main()
{
int a;
scanf("%d",&a);
a&=0x000f;
printf("%d\n",a);
}
那里的a&=0x000f; 是a和0x000f位与把高位的东西清零,你输入的字母的ascii的值大于127所以你输出的是负数

因为你定义的输入数据是整型,当你输入字母和符号时就会发生错误。
如果你想输入字母和符号,就定义为 char a。下面的就是:

#include <stdio.h>
void main()
{
char a;
scanf("%c",&a);
printf("%c\n",a);
}

你需要先定义一下a的值,比如1,不然它默认的是-858993460

因为你定义的a是int型(整型),而你输入的是char型(字符型)的,两者不配,所以输出的就是一个随机的数,应该把a定义成char型,如:char a;