不同大小的数据占用的内存不同,故存在不同的数据类型。按计算机的存储方式可以分为两大基本类型:整数类型和浮点数类型(C语言把不含小数点和指数的数作为整数)。
char //字符数据类型
short //短整型
int //整型
long //长整型
long long //更长的整型
float //单精度浮点型
double //双精度浮点型
#include<stdio.h>
#include<stdlib.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));
system("pause");
return 0;
}
运行结果:1 2 4 4 8 4 8
sizeof是一个关键字,用来求取数据类型所占空间大小,即占用几个字节。最小的存储单元是位(bit),1个字节是8个比特位。1位字节可以表示0或1,那么8位字节就有256(2的8次方)种可能的0、1组合,通过二进制编码可表示0~255的整数或一组字符。
变量:可以改变的数据(即空间内存储的数据可以改变的量)。
变量的定义以及初始化:类型关键字 变量名
int age=12;
float math_score=67.5;
int age=12;
printf("小明去年%d岁",age);
age=13;
printf("小明今年%d岁",age);
运行结果:12 13
运行结果表示,变量age空间中存储的数据可以被修改。
常量:空间中的数据不能被改变的量。
分类:字面常量、常变量、枚举常量。
字面常量:代码中直接可以看到的数据
常变量:使用const关键字修饰的变量,表示空间中的数据不能被修改。
以上程序存在错误无法运行,因为变量一旦被const修饰则不能修改空间中存储的数据。
枚举常量:
运行结果:2
RED,GREEN,BLUE依次表示0、1、2
变量的作用域和生命周期
作用域即变量生效的范围。每个变量都有自己的作用域,只有在自己的作用域内才能被访问。下图所示代码中,age的作用域在花括号内,而调用这个变量的值进行打印时出了age的作用域,因此程序出现报错。
综上可知,花括号外面的无法调用里面的,而花括号外面的可以被里面的访问。无法被访问的本质原因是变量出了作用域就会被释放掉。注意,变量在访问前必须先定义。
定义在花括号里面的变量是局部变量。局部变量的作用域和生命周期都在花括号以内。
定义在花括号之外的变量是全局变量。全局变量的作用域:可以在任意位置被访问;生命周期:随着程序运行,在程序结束前被释放。
运行结果:小明今年12岁
常量的作用域和生命周期
常量一般不讨论作用域。生命周期随程序运行,在程序结束之前被释放。
注意:1.同一个作用域内,变量不能重名。
2.不同作用域内,变量可以重名,且遵循“同名就近”原则。
int age = 13;
int main()
{
{
int age = 12;
}
int age = 11;
printf("小明今年%d岁\n", age);
return 0;
}
运行结果:小明今年11岁