赵老师笔记----关键字和程序结构
数据类型关键字(12)
char a;//字符型变量,8位,有效表达范围-128~+127
unsigned char a;//无符号字符型变量,8位,有效表达0~255
short
short int a;//短整型变量,16位
unsigned short int a;//0~65535
int a;//整型变量,32位
long
long int a;//长整型变量,32位
float a;//浮点型变量,32位
a=0.5;//32位,4个字节
double a;//双精度浮点型变量,64位,8个字节
a=112e-3;
void ;//空,函数形参还有返回值,无参数,无返回值
unsigned signed
signed int a=-10;//int 就是signed int
struct 结构体
union 联合体、共用体
enum 枚举类型
2.存储器类相关的关键字(5)
auto 自动型,就是缺省值,只在自己的作用域里面有效,超出后释放
static 静态型,变量可以突破它的作用域
const 变量将会是只读,后面不再改变,定义时应给赋值
extern 外部的意思,在别的源程序里定义了某变量,想在本源程序使用它,声明是外部型变量
register 寄存器型变量,只修饰字符型和整型,不能修饰浮点型,表示分配该变量是分配在寄存器里面,访问就会快一些
3.控制语句关键字(12)
条件语句
if
;
[else
;]
分支语句
switch ()
case XX :
; break;
case x2:
;break;
default:
;break;
循环语句
for ( ; ; )
{
}
while( )
{
}
do
{
}while ()
continue
goto 结构化程序拒绝使用goto,但偶尔用用也可以,只要不出错
return 返回,在main函数里返回表示是程序结束返回操作系统
在一般函数里用,表示函数的结束,返回调用函数
4.其他关键字(3)
sizeof 取得简单数据类型的大小,以字节为单位,复杂类型。。。
typedef 取别名
typedef short int int16;
typedef long int int32;
int16 a;
volatile 易变型,修饰变量时表示该变量不被编译器优化
一般说来,volatile用在如下的几个地方:
1、中断服务程序中修改的供其它程序检测的变量需要加volatile;
2、多任务环境下各任务间共享的标志应该加volatile;
3、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能有不同意义;
C语言的程序结构
1顺序结构
int a =10;
int b =20;
int c;
c=a+b;
printf("a+b=%d",c);
c=a-b;
pr
2选择结构(分支结构)
if
else
使用:
(1)if (表达式) ;//{;;}
(2)if (表达式) ;//{; ;}
else ;
(3)if (表达式) ;
else if (表达式2) ;
else ;
(4)if (表达式)
{
if (表达式2);
else ;
}
else
{
}
条件运算符 ?:
(表达式)?语句1; :语句2 ;
if (表达式) 语句1;
else 语句2 ;
switch (表达式)
{
case 常量表达式1: ;;break;
case 常量表达式2: ;;break;
。。。。。。
case 常量表达式n: ;;break;
default : ;;break;
}
练习.任意给出一个年、月、日,判断是这一年的第几天:
闰年算法:能被4整除且不能被100整除,或者能被400整除
如:2012 5 10 是这一年的第131天
提示:switch
int totalday=0;
printf("Please input year month day:")
scanf();
if (year%4==0&&year%100!=0)||(year%400==0)
leap=1;
else
leap=0;
switch (month)
{ case 1: totalday=day;break;
case 2: totalday=day+31;break;
case 3: totalday=day+31+28+leap;break;
}
3循环结构
(1) for (表达式1;表达式2;表达式3)
{
}
表达式1的初始条件,表达式2的作用是否符合条件,符合条件则进入循环体,
否则退出循环体
表达式3修改循环条件
(2)表达式1
while (表达式2)
{
.....
.....
表达式3;
}
(3) 表达式1
do
{
.....
.....
表达式3;
}while (表达式2)
以上三种结构完全可以互换
死循环的三种表达
while(1);
do {} while(1);
for (;;){}
(4)goto语句,在结构化程序设计时最好少用,但偶尔用用也无妨
int a =10;
int b =20;
int c;
c=a+b;
goto skip
printf("a+b=%d",c);
skip:
c=a-b;
练习.任意给出一个年、月、日,判断是这一年的第几天:
闰年算法:能被4整除且不能被100整除,或者能被400整除
如:2012 5 10 是这一年的第131天
提示:switch
int totalday=0,year=0, month=0, day=0,leap=0;
int i;
printf("please input: year month day\n");
scanf("%d %d %d",&year,&month,&day);
if ((year%4==0&&year%100!=0)||(year%400==0))
leap=1;
else
leap=0;
for (i=1;i<=month;i++)
{
switch (i)
{ case 1: totalday+=day;break;
case 2: totalday+=31;break;
case 3: totalday+=28+leap;break;
case 4: totalday+=31;break;
case 5: totalday+=30;break;
}
}
printf("%d:%d:%d is %dth day\n", year, month, day, totalday);
break语句和continue语句
break语句直接跳出本层循环体
continue语句结束本次循环的后续语句,该循环继续。。。
如何跳出多重循环???
int flag=0;
while (...)
if flag break;
while (...)
if flag break;
while ( ...)
if (....)
{
flag=1;
break;
}