学习目标:
- 数据类型
- 变量的定义
- 全局变量和局部变量
- 变量的作用域和生命周期
- 常量
- 字符串+转义字符+注释
学习内容:
一、数据类型:计算机语言必须有能力描述生活中的问题,如书架上有十本书。
#include <stdio.h>
int main()
{
//类型的使用:类型名 变量名/空间名 = 初值;
int Book = 10;//开辟一块内存空间,空间名为Book,把10存入空间内
printf("%d",Book);
//字符数据类型---单引号引起的内容
char ch = 'a';
printf("%c",ch);
//短整形---整数
short int num = 10;
//整型---整数
int age = 20;
//短整形 short int、长整型long int、更长的整型long long int,其中int都可以省略
//整型有多种不同类型的区别在于空间大小,而打印格式都是%d
//单精度浮点型---小数
float weight = 55.5;
//双精度浮点型---小数
double d = 0.0;
return 0;
}
注意:
%d打印整型十进制数据,%c打印字符格式的数据
%f打印单精度浮点数(小数),%p以地址的形式打印
%lf打印双精度浮点数
问题1:每一种类型的大小是多少?
#include <stdio.h>
int main()
{
//sizeof关键字--操作符
printf("%d\n", sizeof(char));//1byte
printf("%d\n", sizeof(short));//2byte 可存的最大值2^16-1
printf("%d\n", sizeof(int));//4byte 可存的最大值2^32-1
printf("%d\n", sizeof(long));//4/8byte
printf("%d\n", sizeof(long long));//8byte 可存的最大值2^64-1
printf("%d\n", sizeof(float));//4byte
printf("%d\n", sizeof(double));//8byte
return 0;
}
解读:
1、sizeof():计算数据类型或者变量所占空间的大小,单位:字节byte
2、sizeof求变量或类型的空间大小外,也可以求数组元素个数
3、C语言标准规定:sizeof(long) >= sizeof(int),故long类型所占字节因计算机而异。
4、同一种类型的有符号和无符号所占字节数相同
问题2:为什么出现这么多种整型类型?
原因:类型的选择性多,对空间的利用率更高。
如,存一个年龄的数据,选择short类型开辟的空间需要2字节,选择int类型开辟的空间需要4字节,故选择合适的类型,有利于节省空间。
不同类型创建的变量,具有不同的空间大小,即存放的数据最大值不同。
问题3:C语言有没有字符串类型?
答:没有,C语言使用数组来存放字符串
二、变量的定义
变量和常量
常量:如,圆周率、血型、身份证号码等,不可以被改变的量
变量:如,年龄、工资、体重,可以被改变的量
#include <stdio.h>
int main()
{
//变量的定义
short age = 18;//向内存申请2字节(16bit),用来存放18
float weight = 95.6f;
char ch = 'w';
age = age + 1;
weight = weight - 10;
printf("%d\n", age);//由此可知,变量age,变量weight是可变的
printf("%f\n", weight);
return 0;
}
解读:
1、变量的定义,即创建一个变量:①类型 变量名 = 初始值;②类型 变量名;推荐初始化
2、float和double类型,显示时,默认小数点后6位
3、float weight = 95.6;含义:向内存申请4个字节的空间,即创建了一个空间,名为weight,存放小数95.6,(编译器小数默认为double类型)
4、此时会出现警告:“初始化”:从“double”到“float”截断,存入float中会发生精度丢失,解决方法:float weight = 95.6f
5、输出格式:%d整型、%f单精度浮点型、%lf双精度浮点型、%c字符型、%s字符串
三、全局变量和局部变量
1、变量的分类:全局变量和局部变量
#include <stdio.h>
int a = 100;//全局变量:大括号{}外部定义的变量
int main()
{
int a = 10;//局部变量:大括号{}内部定义的变量,局部变量不一定放在主函数内部
printf("%d\n", a);
return 0;
}
注意:当局部变量和全局变量名字冲突时(相同时),局部变量优先,不建议全局变量和局部变量名相同
#include <stdio.h>
int main(