一,数据类型
1.作用:为创建变量
2.七种数据类型:
①整数型:char字符型,short短整型,int整形,long长整形,long long 更长整形
②小数型:float单精度,double双精度
3.主要涉及到类型的大小及如何采用数据类型定义变量常量
①.如何代码计算出类型的大小
#include<stdio.h>
int main()
{
printf("%d\n", sizeof(char));
printf("%d\n", sizeof(short));
printf("%d\n", sizeof(int));
printf("%d\n", sizeof(long));
printf("%d\n", sizeof(long long));
printf("%d\n", sizeof(float));
printf("%d\n", sizeof(double));
return 0;
}
输出结果,依次是1byte,2byte,4byte,4byte,8byte,4byte,8byte
补充:sizeof是一个操作符,用来计算数据类型和变量的大小
计算机的基本单位是bit,一个比特位存一个二进制位,byte字节
1byte=8bit,KB=1024byte,MB=1024KB,GB=1024MB
由于利用空间的的大小不同,也就有了不同内存空间大小的 数据类型,择优而用
②数据类型定义变量
int main()
{
short age = 10;//short创建age变量,为age 开辟了short大小的空间用来存放10
int num=100;
float weight = 55.5f;//不加f则会默认为double 类型,可能会报警告
char ch = 'e';//字符串用" "引起来,字符用‘ ’引起来
.....
return 0;
}
二,变量的作用域及生命周期
首先,变量分为两种全局变量和局部变量。
1.局部变量和全局变量定义
int b = 10;//大括号外为全局变量
void test()
{
int c = 1;//局部变量
}
int main()
{
int a = 5;//大括号内部为局部变量
return 0;
}
2.变量作用域
①局部变量作用域
int main()//正确:因为printf在 int a作用域内
{
{
int a = 10;
printf("%d\n", a);
return 0;
}
} 输出10
int main()//错误:printf在int a 作用域范围外,发出未声明的标识符的错误警告
{
{
int a = 10;
return 0;
}
printf("%d\n", a);
}
由此可见:局部变量的作用域的定义为变量所在的局部范围
②全局变量的作用域
int a = 10;//正确,为全局变量,作用于整个工程
void test()
{
printf("test:%d\n", a);
}
int main()
{
printf("main:%d\n", a);
test();
return 0;
} 输出:test:10 main:10
注意:若引用另一个.c文件中的变量则要进行外部变量声明
例如在add.c 中定义:int jesus=10;
在引用时要写extern int jesus;//声明外部符号
如下:
extern int jesus;//声明外部符号,若不声明,则报错:jesus未声明变量
int main()
{
printf("%d\n", jesus);
return 0;//目的:验证全局变量的作用域为整个工程
}输出10
3.变量生命周期
①局部变量生命周期:进作用域开始,出作用域结束
int main()
{
{
int a = 10;
printf("%d\n", a);//当a出了小括号就被操作系统销毁收回了,输出10
}
printf("%d\n", a);//这个地方报错。是a为未声明的表识符
return 0;
}
②全局变量生命周期:和程序生命周期一样
int a = 5;//a的生命周期并不会因为void的结束而结束。
void test()
{
printf("%d\n", a);
}
int main()
{
test();
return 0;
} 输出5
注意:全局变量的名称和局部变量的名称一样,局部标量优先,
int a = 5;
int main()
{
int a = 10;
printf("a=%d\n", a);
return 0;
}输出10