c语言 语法问题

语句结束标志的分号

  • 多写一个分号
if(x[i]>big)
	big=x[i];

if(x[i]>big);
	big=x[i];
//相当于
//if(x[i]>big){}
//  big=x[i];
  • 遗漏分号

    1. 情况一

       ```c
       if(n<3)
       	return
       temp=x[0];
       x[0]=x[1];
       x[1]=temp;
       //等同于
       /*
       if(n<3)
       	return temp=x[0];
       x[0]=x[1];
       x[1]=temp;
       */
       ```
      

      上述代码所在函数 若返回值为void,编译器会报错,若默认返回int型,当n>=3时,第一个赋值语句会被跳过,导致程序运行出错。

    2. 情况二

      当一个声明的结尾紧跟一个函数定义时,如果声明结尾的分号被省略,编译器可能把声明的类型视作函数的返回值类型。

      struct logrec{
          int data;
          int time;
          int code;
      }
      main(){
      /*
      程序段
      */
      }
      

switch语句

c语言中把case标号当作真正意义上的标号,因此程序的控制流程会径直通过case标号,而不受任何影响。对于下面的程序代码段

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

当color值为2时,运行结果为:

yellowblue

也就是说,对于c语言的switch语句,如果case部分不加break语句,程序会从满足条件的case部分依次执行剩余的所有case部分的语句。

函数调用

如果存在以下函数

f(){
    
}

​ f();

是对该函数的调用

​ f;

则只是计算函数f的地址,并未调用该函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小飞学编程ing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值