目录
一、数据类型
二、变量
变量的命名:
变量的分类:
变量的使用:
三、常量
常量的定义和分类
四、变量作用域和生命周期
作用域:
生命周期:
一、数据类型
当我们去超市购物的时候,看到商品的标价都是xx.xx元,以及我们的身高体重年龄等,那么我们怎么把这些数据告诉给计算机呢?首先是要告诉它我给它的数据是什么类型吧。
数据类型存在于计算机中是为解决实际问题的需要。
在C语言中都有什么数据类型?
#define use_CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int main(){char a = 'W';int b = 10;short int c = 10;long int d = 1000;long long int e = 100000;float f = 0.0f;double g = 10.025;printf("%d\n",sizeof(char));//字符数据类型printf("%d\n", sizeof(int));//短整型printf("%d\n", sizeof(short));//整型printf("%d\n", sizeof(long));//长整型printf("%d\n", sizeof(long long));//更长的整型printf("%d\n", sizeof(float));//单精度浮点类型printf("%d\n", sizeof(double));//双精度浮点类型return 0;}
一般来说,short int 简写成short,long int 简写成long, long long int 简写成 long long ,这些在C语言中都是可以的。
而每一种数据类型在都有它的大小,单位是字节(byte)可写成B
char 1B
int 4B
short 2B
long 4B
long long 8B
float 4B
double 8B
二、变量
生活中有些值是不变的(比如:圆周率、性别、身份证号码、血型等等)
有些值是可以变的(比如:年龄、薪水、体重等)
会变化的值在C语言中称为变量( 内存中开辟了一个变量的存储空间)
变量的命名:
只能由字母(大小写)、数字和下划线组成不能以数字开头长度不能超过63个字符,注意单位是字符变量区分大小写变量名不能使用关键字(但是可以包含)有计算机基础的同学可能会把windows文件的命名和这里的C语言变量命名搞混淆,他们之间不太有什么关联,记住就可以了。
变量的分类:
局部变量全局变量int a = ;//全局变量#include <stdio.h>int main(){int b = ;//局部变量printf("a=%d,b=%d\n", a, b);return 0;}
全局变量写在main函数外部,局部变量写在main函数内部。
当局部变量的变量名和全局变量的变量名相同时,优先局部变量。
int a = ;//全局变量#include <stdio.h>int main(){int a = ;//局部变量printf("a=%d\n",a);return 0;}
变量的使用:
#include <stdio.h>int main(){int num1 = 0;int num2 = 0;int sum = 0;scanf_s("%d %d", &num1, &num2);sum = num1 + num2;printf("sum=%d", sum);return 0;}
三、常量
C语言中,常量是不变的量。
常量的定义和分类
C语言中的常量可以分为以下几种:
字面常量const修饰的常变量#define定义的标识符常量枚举常量
字面常量:
#include <stdio.h>int main(){3.14159;//字面常量10000;//字面常量return 0;}
字面常量的特点是看起来孤零零的,在程序中直接用,例如:
int main(){int x = 10;int sum = 0;sum = x + (100 * 1000);//100和1000就是常量,直接使用printf("sum=%d", sum);return 0;}
const修饰的常变量:
#include <stdio.h>int main(){const int pai = 3.1415;pai = ;//pai是常变量不可被修改!!!return 0;}
int pai=3.1415;这是在定义一个变量pai,而前面加了const则给这个变量pai赋予了常属性,意思就是pai可以当作常量去使用但是严格意义上pai还是一个变量。既然当作了常量,那么就不能再对pai赋值,否则破坏了语法规则,程序报错。
#define 定义的标识符常量:
由#define定义的标识符常量可以直接当作常量使用,那为什么C语言中会有这种常量的定义方式呢?设想一个班原本有60个同学(#define NUM 60),突然转来10个新同学,假设我已经算好了以60为整体的学生的成绩之类的计算,但是现在班上一共有70个同学了,那我是不是要把之前的成绩计算之类的再重新计算?这样是不是过于的麻烦?所以我们直接#define NUM 70就行了,只需要在之前的基础上改变数值,这样就达到了高效、快速易修改的效果。
int main(){#define MAX 100int x = 10;int arr1[x];//程序执行到这一句会报错int arr2[MAX];//正确printf("%d", MAX);return 0;}
在定义数组大小时[ ]里面只能是常量或者能够计算出确切值的表达式
枚举常量:
#include <stdio.h>enum color { red,green,bule};int main(){enum color a = red;enum color b = green;enum color c = bule;printf("%d\n", a);printf("%d\n", b);printf("%d\n", c);return 0;}
只需要记住枚举变量的关键字是enum,每一个元素都是从0开始依次递增+1
四、变量作用域和生命周期
作用域:
首先给定一个数学上的名词——定义域,通常定义域是F (X)是自变量x的取值范围,其实作用域也可以看作 C语言中变量的作用范围。通常来说,一段程序代码中所用到的所有的名字并不总是有效,而限定这个名字的可用性的代码范围就是这个名字的作用域。
局部变量的作用域是变量所在的局部范围。全局变量的作用域是整个工程。
红框为变量y的作用域,它的活动范围仅仅只在红框中的{}内,如果在红框以外的地方引用变量y则程序报错。
红框内都是变量x的作用域,他的作用域在main函数内。
生命周期:
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段。
局部变量的生命周期: 进入作用域生命周期开始,出了作用域生命周期结束。全局变量的生命周期:整个程序的生命周期。