【C语言】while后接分号“ ;”的用法

菜鸡自学
时刻注意while后是否有分号;不要被迷惑!

  1. while 不带分号;时
    int  y=10;
    int sum=0; 
    while(y<13)//;
    {
      sum++;
      ++y;
    printf("y=%d;sum=%d\n",y,sum);
    }
    printf("\ny=%d;sum=%d",y,sum);

while 与下面大括号内的循环体构成一个整体。
每当满足while( )括号内的循环条件(既括号内值为非零),就执行循环体内的语句组一次,若while内0,则跳出循环,执行下一条。结果为下:

y=11;sum=1
y=12;sum=2
y=13;sum=3

y=13;sum=3
  1. 当while后紧跟分号时;
   int sum=0;
   int y=10; 
    while(y--);//循环条件改变
    {
    sum++;
    ++y;
    printf("y=%d;sum=%d\n",y,sum);
    }
    printf("\ny=%d;sum=%d",y,sum);

while后有;所以while这一行自成一体。
后面大括号内的循环体不运行,为了迷惑读者。

只有当不满足循环条件时,才跳出循环,执行后面的语句。输出为下:

y=0;sum=1

y=0;sum=1
<think>嗯,用户问的是C语言分号的作用,我需要详细解释清楚。首先得回忆分号在C里的基本用法,比如语句结束符。然后想想有哪些地方必须用分号,比如表达式语句、声明、结构控制语句之后可能也需要。还要注意常见错误,比如if后面加分号导致的问题,或者do-while循环必须加分号的情况。可能用户遇到过这类问题,所以需要例子说明。要分点列出作用,结构清晰,用中文,数学公式正确的话可能用不上,但得确保LaTeX格式正确。有没有其他特殊情况?比如宏定义后面通常不加分号,但如果宏展开成语句可能需要。或者空语句的情况,比如for(;;)里的三个分号。对了,结构体和函数定义后面不用分号吗?函数定义后面不需要,但结构体声明结束需要分号。这些都要检查确认,避免错误。用户可能是初学者,所以例子要简单明了,比如正确和错误代码对比。总结分号的重要性,帮助用户理解其关键作用。确保回答覆盖所有主要用途,同时指出易错点,帮助用户避免常见错误。</think>在C语言中,分号(`;`)是语句终止符,其核心作用是标记代码中一个完整逻辑单元的结束。以下是分号的具体作用和注意事项,通过逐步分析帮助理解: --- ### 1. **结束语句** - **表达式语句**:任何以表达式组成的语句必须以分号结尾。 ```c int a = 5; // 变量声明语句 a = a + 3; // 赋值表达式语句 printf("Hello"); // 函数调用语句 ``` - **空语句**:单独的分号表示一个空语句(无操作)。 ```c ; // 空语句,通常用于占位或循环体 ``` --- ### 2. **控制结构中的分号** - **条件/循环语句**:在 `if`, `for`, `while` 等控制结构中,若语句块仅包含单条语句,需用分号结尾。 ```c if (a > 0) printf("Positive"); // 单条语句需要分号 for (int i=0; i<5; i++); // 循环体为空语句 ``` - **`do-while` 循环**:`do-while` 的结束必须加分号。 ```c do { // 代码块 } while (a < 10); // 必须加分号 ``` --- ### 3. **声明与结构体定义** - **变量/函数声明**:所有变量和函数声明以分号结束。 ```c int x; // 变量声明 struct Point { // 结构体定义 int x; int y; }; // 结构体结尾需分号 ``` --- ### 4. **常见错误场景** - **错误1**:在 `if`/`for` 后误加分号,导致逻辑错误。 ```c if (a == 5); // 分号导致条件失效 printf("a is 5"); // 此代码始终执行 ``` - **错误2**:`do-while` 遗漏分号。 ```c do { // 代码 } while (a < 10) // 缺少分号,编译报错 ``` --- ### 5. **分号与预处理指令** - **宏定义**:预处理指令(如 `#define`)末尾不加分号。 ```c #define MAX 100 // 正确:无分号 #define MAX 100; // 错误:可能导致语法问题 ``` --- ### 总结表:分号的作用场景 | 场景 | 是否需要分号 | 示例 | |---------------------|--------------|--------------------------| | 表达式语句 | ✔️ | `a = 1;` | | 控制结构中的单语句 | ✔️ | `if (x>0) x=0;` | | `do-while` 循环结束 | ✔️ | `} while (cond);` | | 结构体/联合体定义 | ✔️ | `struct S { ... };` | | 预处理指令 | ❌ | `#include <stdio.h>` | 通过理解分号的规则和常见错误,可以避免语法问题并提升代码可读性。
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值