C语言常见错误分析

c语言常见错误分析
1.忘记变量。
如:
void main()
{
x=3;
y=6;
printf("%d\n",x+y);
}
c要求对程序中用到的每一个变量都必须定义其类型,上面的程序没有对x,y进行定义。应在函数体开头加上
int x,y;
2.输入输出的数据类型与所用格式说明符不一致。
例如;若a已定义为整型,b已定义为实型:
a=3;b=4.5;
printf("%f %d\n",a,b);
编译时不会给出出错信息,但运行结果将与原意不符,输出为
0.000000 16402
他们并不是按照赋值的规则进行转换,而是将数据在存储单元中的形式按格式符的要求组织输出(如b占4个字节,只把最后2个字节中的数据按%d作为整数输出)
3.未注意数据类型的数值范围。
4.在输入语句scanf中忘记使用变量的地址符。
scanf函数中的“格式控制”后面应当是变量地址,而不应该是变量名。
例如:
若a,b为整型变量,则scanf(“%d,%d,a,b);是不对的,应将”a,b"改为“&a,&b"。
这是c语言与其他高级语言不同之处。
5.如果”格式控制“字符串中除了格式说明外还有其他字符,则输入数据时在对应的位置应输入与这些字符相同的字符。
例如有如下函数:
scanf("%d%d",&a,&b);
有人按下面的方法输入数据:
3,4
这是错的。数据间应用空格来分隔。如果函数为
scanf("%d,%d",&a,&b);
应按照以下的方法输入:
3,4
此时如果用”3 4“反而错了。还应注意,不能企图用
scanf(“input a & b:%d,%d”,&a,&b);
想在屏幕上显示一行信息:
input a & b;
然后在其后输入a和b的值,这是不行的。如果想在屏幕上得到所需的提示信息,可以另加一个printf函数语句:
printf(”intput a & b;");
scanf("%d,%d",&a,&b);
6.误把“=”作为“等于”运算符“,在c语言中,”=“是赋值运算符,”==“才是关系运算符”等于“。如果写成
if(a=b) printf(“a equal to b”);
C编译系统将(a=b)作为赋值表达式处理,将b的值赋给a,然后判断a的值是否为零,若非零,则作为“真”:若作为“假”。如果a的值为4,a!=b,按原意不应输出"a equal to b",而现在先将b的值赋给a,a也为4,赋值表达式的值为4。if语句中的表达式为真,因此输出“a equal to b"。
这种错误在编译时检查不出来,但运行结果往往是错的。而且由于习惯的影响,
程序设计者自己往往也不易发觉

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值