网站代做多长时间,wordpress轮翻图参数,扶沟县建设局网站,芜湖十大企业排名基本数据类型可以作为变量与常量使用,顾名思义#xff0c;变量运行时可以改变其值#xff0c;常量运行时不会改变其值。
常量分为整型常量、浮点型常量、字符常量、字符串常量和符号常量。
通常用#define来定义一个标识符来表示一个常量
用type name 常量来定义一个变量,…基本数据类型可以作为变量与常量使用,顾名思义变量运行时可以改变其值常量运行时不会改变其值。
常量分为整型常量、浮点型常量、字符常量、字符串常量和符号常量。
通常用#define来定义一个标识符来表示一个常量
用type name 常量来定义一个变量, 变量可以理解成一个容器可以乘装不同的常量也可以理解成计算机为name这个标识符开辟的一个个以字节为单位的小格子小格子的数量就是变量类型type所占据的存储空间。每个小格子里的内容依次是当前所装载的常量数据的字节流
1 整型常量与变量
1十进制整数
如自然数
#define CONSTANT_MAX_BUF_LEN_DEC 128
int maxBufLenDec CONSTANT_MAX_BUF_LEN_DEC;其中CONSTANT_MAX_BUF_LEN_DEC为整型常量十进制整数128maxBufLenDec为变量
2八进制整数
八进制的数表示为前面带“0”的数。如
#define CONSTANT_MAX_BUF_LEN_OCT O200
int maxBufLenOct CONSTANT_MAX_BUF_LEN_OCT;其中CONSTANT_MAX_BUF_LEN_OCT为整型常量八进制整数O200maxBufLenOct为变量
3十六进制数
与八进制不同十六进制整数以“0x”开头如
#define CONSTANT_MAX_BUF_LEN_HEX 0x80
int maxBufLenHex CONSTANT_MAX_BUF_LEN_HEX;其中CONSTANT_MAX_BUF_LEN_HEX为整型常量十六进制整数0x80maxBufLenHex为变量
4二进制数
与八进制不同二进制整数以“0b”开头如
#define CONSTANT_MAX_BUF_LEN_BIN 0b10000000
int maxBufLenBin CONSTANT_MAX_BUF_LEN_BIN;其中CONSTANT_MAX_BUF_LEN_BIN为整型常量二进制整数0b10000000maxBufLenBin为变量
注意KEIL编译器C99并不支持二进制整数的表示与输出使用以上代码编译时会报错expected a “;”
所以一般我们并不直接使用二进制数作为常量给变量赋值而是使用十六进制如果非要考虑使用二进制位来表示数据可以考虑使用位域后期会专门讲解此处不做展开。
2 浮点型常量与变量
浮点型常量以“f”结尾
#define CONSTANT_PI 3.141592f
float pi CONSTANT_PI;其中CONSTANT_PI为浮点型常量3.141592fpi为变量
3 字符常量与变量
用单引号界定起来的一个普通字符或转义字符如 ‘a’、‘A’、‘\n‘、\t’等。 普通字符可以是字符集中任意一个字符。普通字符常量的值就是该字符的ASCII值。 转义字符是一种特殊的字符常量以反斜线“\”开头后跟一个或几个字符主要用来表示那些无法输出的控制字符或者特殊字符。
转义字符对照表
转义字符意义ASCLL码值(十进制)\a响铃(BEL)007\b退格(BS) 将当前位置移到前一列008\f换页(FF)将当前位置移到下页开头012\n换行(LF) 将当前位置移到下一行开头010\r回车(CR) 将当前位置移到本行开头013\t水平制表(HT) 跳到下一个TAB位置009\v垂直制表(VT)011\’代表一个单引号’039\代表一个双引号字符034\\代表一个反斜线字符’\’092?代表一个问号?063\0空字符(NUL)000\ddd1到3位八进制数所代表的任意字符三位八进制\xhh十六进制所代表的任意字符十六进制
#define CONSTANT_ENTER \n
char word CONSTANT_ENTER;其中CONSTANT_ENTER为字符常量’\n’word为字符变量。
4 字符串常量与变量
用一对双引号括起来的一个字符序列如:“Hello World”、“Master、“n”、$1000”等。 存储系统自动在字符串常量后面加上“\0”作为字符串结束标志。
#define CONSTANT_HELLO Hello World\n#define CONSTANT_MASTER Masterchar* words CONSTANT_HELLO;words CONSTANT_MASTER; 其中CONSTANT_HELLO为字符串常量Hello World\nCONSTANT_MASTER为字符串常量Master。
使用了char* words定义了字符串变量其本质是一个字符指针。这里相当与将CONSTANT_HELLO及CONSTANT_MASTER的首地址赋值给字符指针words。
5 符号常量
使用**#define宏定义**前面所述的用标识符替换各常量的表示就是符号常量。
通常将符号常量放在头文件中然后在源文件函数中调用。
6 变量
1变量的定义和申明
变量的定义变量必须经过定义才能使用变量的定义即为变量开辟内存空间开辟空间的大小即为变量类型所占的大小。变量的值的范围以变量类型的空间大小和及符号位所决定。同一作用域变量只能定义一次。变量在源文件中定义永远不要在头文件中定义变量。
int a; //定义一个整型变量a
float b; //定义一个浮点型变量b
double c; //定义一个双精度型变量c
char d; //定义一个字符变量d
char* p; //定义一个字符指针变量p
void test(void)
{int sizeOfA sizeof(a); int sizeOfB sizeof(b);int sizeOfC sizeof(c);int sizeOfD sizeof(d);int sizeOfP sizeof(p);printf(size of a %d,sizeOfA); //size of a 4printf(size of b %d,sizeOfB); //size of b 4printf(size of c %d,sizeOfC); //size of c 8printf(size of d %d,sizeOfD); //size of a 1printf(size of p %d,sizeOfP); //size of p 4
}
变量的申明加上extern关键字的变量即为变量声明同一作用域变量可声明多次。变量可在源文件中声明也可在头文件中声明用作外部变量
extern int a; //申明一个整型变量a
extern float b; //申明一个浮点型变量b
extern double c; //申明一个双精度型变量c
extern char d; //申明一个字符变量d
extern char* p; //申明一个字符指针变量p2变量的初始化
变量定义后还需要初始化否则其值会得到预期外的结果。
a 1024;b 0.001024;c 0.0000001024;d \n;p Hello World;3变量的使用和赋值
变量初始化后通过直接调用变量可得到变量的值。
printf(a %d,a);printf(b %f,b);printf(c %lf,c);printf(d %c,d);printf(p %s,p);4变量的作用范围
变量在哪里定义的其作用范围就在哪里如果超出这个作用范围就会得到变量未定义的错误。作用范围就是{}内部代码块的范围
如 {int i 0;}i 1;// identifier i is undefined
5全局变量与局部变量
在源文件中函数外定义的变量就是全局变量
在函数中定义的变量就是局部变量。
6静态变量与动态变量
通过static修饰的变量就是静态变量
静态变量用作全局变量时它在整个当前源文件都是可见的而在文件之外是不可见的在头文件中使用extern声明会得到变量未定义的错误。去掉static修饰变量用extern就可以访问了。
静态变量用作局部变量时在程序执行到该变量的定义处时被首次初始化以后的函数调用不再进行初始化
动态变量在函数中每次调用函数都会从初始值开始赋值。 int addTest(int i)
{static int sum 0;sum i;return sum;}int add(int i)
{int sum addTest(i);return sum;
}void testAdd()
{int sum 0;for (int i 0 ; i 100 ; i){sum add(i 1);}printf(sum %d,sum); //sum 5050}
7常变量
变量用const修饰时就是常变量
常变量指定义时必须显示初始化且值不可修改的变量。与其他变量一样被分配空间是可以寻址的。注意字符串常量是常变量的一种名称为其本身因为其存储在静态存储区的常量区可寻址不可修改。
常变量和常量的区别是
常量不开辟内存空间。在预编译时就全部由符号常量的值替换了⽽常变量占⽤内存空间只是此变量在存在期间不能重新赋值。
常量在计算机运行时不会被程序修改的量常变量是在运行时被计算机赋予的值其值不是唯一的。