块语句
#include<stdio.h> void main(){ //块语句一般用于函数,循环,选择,无限嵌套块语句,让代码更加规范 { int a=1;//不同块语句定义的变量互不影响,编译器会为其分配不同的内存地址,存储不同的值,从下面可以看出 printf("%x,%d\n",&a,a); //61fe4c,1 引用变量引用的是同一个块语句中的变量 { int a=2; //int a; 同一个块语句中无法定义同名变量 printf("%x,%d\n",&a,a); //61fe48,2 引用变量引用的是同一个块语句中的变量 } { int a=3; printf("%x,%d\n",&a,a); // 61fe44,3 引用变量引用的是同一个块语句中的变量 } } }
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> void main(){ //输出1-10中不被3整除的数 for(int i = 1; i <= 10; i++){ if(i%3==0){ continue; } printf("%d\n",i); } //增加一个语句块可以重复使用i 局部变量 { int i = 1; A1:if (i < 10){ //循环条件 printf("\n%d", i); //A1即是语句标识符 i++; goto A1; //goto形成循环 } getchar(); } }
ifselse
#include<stdio.h> void main(){ if(0) if(0); else ; else; //等价于 if(0) if(0); else ; else; if(0);else ; //是一个整体 while(1); //while 括号后有分号就说明while的语句是一个空语句,后面的printf是另外一个独立的块语句,与while没有关系 { printf("ffff"); } //for的死循环方式 for(;;){ //第二个表达式非0则循环,0则停止循环 printf("for的死循环方式1"); } for(;2;){ //第二个表达式非0则循环,0则停止循环 printf("for的死循环方式2"); } for(int i=1,j=2; i<100;i++,j+=2){ //表达式1和表达式3可以是逗号表达式 printf("%d",i); } //等价于下面的for for(int i=1,j=2; i<100;i++,j+=2,printf("%d",i)){ //表达式1和表达式3可以是逗号表达式 } }
#include<stdio.h> void main(){ printf(" "); for(int i=1;i<10;i++){ printf("%3d",i); } printf("\n"); for(int i=1;i<10;i++){ printf("%3d",i); for(int j=1;j<=i;j++){ printf("%3d",i*j); } printf("\n"); } } OutPut 1 2 3 4 5 6 7 8 9 1 1 2 2 4 3 3 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
switch 只能处理整型常量和字符常量,只能判断是否相等
switch结构只进行相等与否的判断,而if…else…结构还可以进行大于小于等范围上的判断。此外,switch无法处理浮点数,只进行整数的判断,而且,case标签值必须是常量,如果涉及到浮点数和变量的判断,应当使用if…else…结构。应当从可读性和程序效率多方面综合考虑,适当搭配两种结构,方能写出高质量的代码。
case语句相当于入口、开关或者说是进入的钥匙,这便是开关语句这个名称的由来。