一:常量
C语言中有四种常量类型
- 整型常量
- 实型常量
- 字符型常量
- 字符串常量
- 符号常量
⭐整型常量
①:整型常量可以用八进制、十进制和十六进制3种形式来表示,分别采用不同的前缀
八进制:采用0,例如0214
十进制:不加任何前缀,例如214
十六进制:采用0x/0X,例如0x214、0X214
②:在整型常量后添加后缀“L”或“l”,表示长整型数,如:100L、25L、0Xae5l等
③:用后缀“U”或“u”表示无符号整数,如: 22U、87u等
✳:注意:整型常量的数字之间不允许嵌入空格、逗号或非数字字符
✳:后缀的不同,影响的只是存储空间,对计算结果并无影响 100L+25L与100+25其结果在数学上没有区别
整型数据类型
①:基本整型 (int型)字节为4 用于存储整数 例 int a = 10;整形数据是不带小数的数字
②:短整型(short int)字节为2
③:长整型(long int)字节为4
④:双长整型(long long int)字节为8
⭐实型(浮点型)常量
①:十进制小数形式: 如123.456,-56.79,0.0,12.0等
②:指数形式: 如12.34e3(表示12.34✖),-346.87e-25(表示-346.87✖
)
✳:规定e和E代表以10为底的指数,但注意e和E之前必须有数字,且e和E后必须为整数
✳:实型常量默认为是double型,但可以通过添加后缀”F/f”来表示该实型常量为float型
例如 3.14f、12e-4F
✳:注意实型常量中不得出现任何空白符号
实型(浮点型)数据类型
浮点数据就是带小数的数字
①:float (单精度浮点型) 字节为4 用于存储小数 能得到6位有效数字
②:double (双精度浮点型) 字节为8 用于储存位数更多的小数 能得到15位有效数字
③:long double (长双精度型) 字节为16 范围更精确
⭐字符常量
①:普通字符 即用单撇号括起来的一个字符,如'a','Z','3','?','#'等
②:转义字符 即以字符"\"开头的字符数列
✳:字符常量只允许有一个字符,如果需要多个字符,请使用字符串常量
✳:数字被定义为字符型后,其数值改变。如4和’4’代表不同的量,'4'是字符常量,而4是整型常量。
✳:转义字符主要用来表示那些无法输出的控制字符或者特殊字符
字符常量数据类型
①:char 字节为1 用于存储单个字符
②:注意字符数据只占一个字节,放0~255范围内的整数。
⭐字符串常量
①:用一对双引号""括起来的一个字符序列 如:"Hello "、"a"、"$13.14"
②:存储:系统自动在字符串常量后面加上"\0"作为字符串结束标志。
如字符串”china”在内存的存储情况为:
“\0”是一个ASCII值为0的不可显示字符,不引起任何控制操作。
✳:字符常量 与 字符串常量 的区别
(1)定界符不同:字符常量使用单引号,而字符串常量使用双引号;
(2)长度不同:字符常量的长度固定为1,而字符串常量的长度,可以是0,也可以是某个整数;
(3)存储形式不同:字符常量存储的是字符的ASCII码值,而字符串常量,除了要存储有效字符的ASCII码值外,还要存储一个结束标志“\0”。
⭐符号常量
①:定义 用一个标识符代表一个常量的符号,称为符号常量,即以标识符形式出现的常量。
②:格式 #define 标识符 常量
③:好处 含义清楚,能做到一改全改。
✳:注意
(1)预处理命令后不用加分号;!!!
(2)符号常量名用大写,变量名用小写,以示区别。
(3)区分符号常量和变量,不要把符号常量误认为变量。符号常量不占内存,只是一个临时符号,代表一个值,在预编译后这个符号就不存在了,故不能对符号常量赋新值。
⭐常变量
① 定义变量时,前面加一个关键字const eg:const int a=3;
② 常变量与常量的异同
常变量具有变量的基本属性:有类型,占存储单元,只是不允许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。
③ 常变量与符号常量的异同
符号常量PI和常变量pi都代表3.1415926,在程序中都能使用.但二者的性质不同:定义符号常量用#define指令,它是预编译指令,知识用符号常量代表一个字符串,在预编译时候仅进行字符替换,在预编译后,符号常量就不存在了(全置换成3.1415926了),对符号常量的名字是不分配存储单元的.而常变量要占用存储单元,有变量值,知识该值不变而已
✳:常变量具有符号常量的优点,使用更方便.有了常变量后,可以不必多用符号常量
⭐常量总结思维导图
⭐基本数据类型思维导图
二:变量
在程序运行过程中其值可以改变的量
作用:存储数据
⭐变量的定义
①:使用变量前先定义变量,变量名就是标识符,注意区分变量名和变量值两个不同的概念,变量占据内存中一定的存储单元
✳:注意
<1>多个变量名之间用逗号进行分隔,数据类型和变量名之间至少用一个空格进行间隔。
<2>变量的定义语句通常放在函数体的开始部分,变量定义语句的位置直接影响变量的作用域。
<3>若变量定义语句放在函数体内,则要集中在函数的开始,不能与其他语句混放,否则错误。
<4>C程序的每个变量都有固定的类型,不允许在程序的同一处将同一变量定义为不同类型。
⭐变量的赋值
赋值方式
①: 先声明再赋值
int num; //定义一个整形变量,变量名字为num
num = 100; //给num变量赋值为100
int a,b,c; //同时声明多个变量,然后分别赋值
a=1;
b=2;
c=3;
printf("%d\n",num); //打印整形变量num
②: 声明的同时赋值
#include<stdio.h>
int main()
{
int num; //声明
num=1; //赋值(定义)/赋值表达式语句
float a=2; //声明的同时初始化变量
return 0;
}
✳:注意: int x=y=z=2;这是错误的 定义里不能连续赋值
因为C语言里的 = 是右结合并赋值 2会赋值给z,z会赋值给y,y会赋值给x
此时会出错是因为z是没有预先定义的,后面代码正确的原因是提前定义分配了内存
正确为: int x,y,z;
x=y=z=2 ;
或者写为:int x=2,y=2,z=2;(这是声明的同时赋值)
⭐变量的初始化
在定义一个变量的同时赋给它初值 如 int a=1,b=2
✳:注意
- 可以对被定义的部分变量初始化。如,int a=1,b=2,c;
- 如果对几个变量初始化为同一个值,应写成:int a=5,b=5,c=5;不能写成:int a=b=c=5;
- 变量不一定要进行初始化,但使用变量之前应该赋给变量一个确定的值
⭐变量总结
- 变量——杯
- 变量名——杯子的号码
- 变量类型——所装的材料名称
- 变量值——所装的东西多少
三:输出练习
⭐实型(浮点型)变量
#include <stdio.h>
int main()
{
float a;
double b;
a=6666.666666;
b=6666.6666666666666666;
printf("a=%f\nb=%f",a,b);
}
输出结果:
✳:a是单精度浮点型,最多有7位有效位数,整数已占4位,故小数部分3位之后的均为无效数字。
✳:b是双精度浮点型,有效位最多为16位,但"%f"默认小数位数保留6位,其余部分四舍五入。
⭐字符变量
#include <stdio.h>
int main()
{
char a,b;
a='a';
b='b';
printf("a=%c b=%c\n",a,b);
printf("a=%d b=%d",a,b);
}
输出结果:
✳:输出形式取决于函数printf()格式串中的格式符
当格式符为"%c"时,对应输出的变量值为字符,当格式符为"%d" 时,对应输出的变量值为整数
⭐符号常量
#define PRICE 30
#include<stdio.h>
int main( )
{
int num,total;
num=10;
total=num*PRICE;
printf("total=%d\n",total);
}
输出结果:
四:ASCII码表