C语言for循环break语句

本文通过几个示例程序详细介绍了C语言中break语句的行为特性,即它只会跳出当前所在的最近一层循环,并解释了静态变量的工作原理,包括其生命周期和作用域特点。
#include <stdio.h>

int main() {
int m=0;
for(int j=0;j<10;j++)
{
    for(int i=0;i<10;i++)
    {

            m++;
            break;




    }
}
    printf("m=%d",m);

    printf("Hello, World!\n");
    return 0;
}
/home/andrew/文档/Clion/untitled4/cmake-build-debug/untitled4
m=10Hello, World!

Process finished with exit code 0

总结一下,在循环中的break语句,无论有多少层for循环,break语句永远只跳出自己所在那一层循环,即写在那一层循环就跳出那一层循环。
注意静态变量与C++中的常变量的区别,静态变量的作用是在局部函数中定义一个全局变量,

#include <stdio.h>
//#include <string.h>
int fun()
{
    static int  x=1;
    x*=2;
    return x;

}
int main()
{
   int i,s=1;
    for(i=1;i<=3;i++)s*=fun();

    printf("k=%d\n",s);



}
E:\Clion_file\pro.1\cmake-build-debug\pro_1.exe
k=64

Process finished with exit code 0

static int x=1;虽然在局部函数中进行定义的,但是一旦声明为static型的变量,x就会相当于全局变量,知道函数结束才进行内存单元的释放。

39有以下程序: 

#include <stdio.h>
#include <stdlib.h> 
main()
{ 
int *a*b*c;
a=b=c=(int *)malloc(sizeof(int));
*a1*b2*c3; 
a=b;
printf("%d%d%d\n"*a*b*c);
} 
程序运行后的输出结果是(  )。
1,1,3

2,2,3

1,2,3 

3,3,3

正确答案:D
答疑:【解析】malloc函数动态分配一个整型的内存空间,然后把函数返回的地址用(int*)强制类型转换为整型指针,再把它赋给a,b,c,即让指针变量a,b,c都指向刚申请的内存空间。所以只有最后一个赋值语句*c3的值保留在了该空间内,因为a,b,c三个指针变量均指向该空间,所以打印该空间内的数值为3
在C语言中,for循环语句结构可使程序按指定的次数重复执行一个或一组语句。采用for语句构成循环结构的一般形式如下: ```c for(初始化表达式;条件表达式;增量表达式) { 语句; } ``` for语句的执行过程是: 1. 先计算初始化表达式的值,然后将该值作为循环控制变量的初值。 2. 再计算条件表达式的结果,若其值为“真”,则执行for后面的语句;如果为“假”,那么跳出for循环语句。 3. 若条件表达式为“真”,则在执行指定的语句后,执行增量表达式。 4. 执行完指定语句后再回到第(2)步执行 [^3]。 下面通过几个示例来进一步理解for循环的使用: ### 示例1:打印从1到5的整数 ```c #include <stdio.h> int main() { int i; for (i = 1; i <= 5; i++) { printf("%d\n", i); } return 0; } ``` 在这个示例中,初始化表达式 `i = 1` 将循环控制变量 `i` 初始化为1;条件表达式 `i <= 5` 表示只要 `i` 的值小于等于5,就会继续执行循环;增量表达式 `i++` 使得每次循环结束后 `i` 的值增加1 [^2]。 ### 示例2:计算从1加到10的结果 ```c #include <reg51.h> //包含头文件 void main(void) { unsigned char num,sum; //定义两个变量 sum = 0; //变量赋初值 for(num = 0;num < 11;num++) { //求num从0加到10的结果 sum = sum + num; //求和结果送到存储求和值的变量中 } P0 = sum; //最终结果送P0口显示 while(1) { //程序在此无限循环 } } ``` 此示例中,初始化表达式 `num = 0` 将 `num` 初始化为0;条件表达式 `num < 11` 确保 `num` 小于11时循环继续;增量表达式 `num++` 使 `num` 每次循环后增加1。在循环体中,不断将 `num` 的值累加到 `sum` 中,最终将结果送到P0口显示 [^3]。 ### 示例3:使用break语句提前终止循环 ```c #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { int i; for (i = 1; i < 11;i++) { if (i==5) { break; } printf("%d\n", i); } return 0; } ``` 在这个示例中,当 `i` 的值等于5时,`break` 语句会强制跳出循环,即使循环条件 `i < 11` 尚未结束 [^1][^4]。 ### 示例4:for循环执行顺序的特殊情况 ```c #include<stdio.h> int main() { int x,y; for(x=0;x<3;x++) { printf("1.x=%d\n",x); x++; printf("2.x=%d\n",x); } printf("3.x=%d",x); return 0; } ``` 此示例需要注意,for循环是先执行了求解表达式(增量表达式),之后才会再进行判断。在这个程序中,for循环结束的时候 `x` 的值是4,如果在程序中需要在此时读取 `x` 的值则需要特别注意,否则会出错 [^5]。
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

andrewbytecoder

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

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

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

打赏作者

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

抵扣说明:

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

余额充值