#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语句相当于入口、开关或者说是进入的钥匙,这便是开关语句这个名称的由来。