语法里常见的错误

 

1 语句结束符的分号

如果在写代码的时候少写了分号或者多加了分号,这样的错误带来的后果是很严重的。有时候编译器可能都不会对其进行报错,这样导致你寻找错误的成本大大增加。比如:

if(x[i] > big);
    big = x[i];

编译器会正常地接收第一行代码中的分号而不会提示任何警告信息,正确的做法应该是:

if(x[i] > big)
    big = x[i];

2 switch语句

C语言的switch语句的控制流程能够依次通过并执行各个case部分,这一点是C语言与众不同之处。但是你有时候会忘记写break语句,这样就会造成意想不到的后果,比如:

switch(color){
case 1:printf("red");
case 2:printf("yellow");
case 3:printf("blue");
}

如果当color的值为2的时候,编译器会输出“yellowblue”。因为程序的控制流程在执行了第二个printf函数的调用之后,会自然而然的顺序执行下去,第三个printf函数调用也会被执行。所以在写switch语句的时候要相当注意,不过有时候你的需求就是不用加break,那么最好在程序里写上你的注释,这样别人就不会以为是忽略的错误。

case SUBTRACT:
            opnd2 = -opnd2;
            //此处没有break语句

case ADD:
            .....

3 “悬挂”else引发的问题

else始终会与同一对括号内最近的且未匹配的if结合

练习2-1

C语言允许初始化列表中出现多余的逗号,例如:

int days[] = { 31, 28 ,31 , 31,};

为什么这种特性是有用的?答:方便自动化编写代码,不用单独处理。



查看原文: http://47.100.160.51/wordpress/?p=108
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值