一、数据类型、运算符和表达式
学习目标:
- 数据类型
- 常量与变量的差异
- 整型、浮点型、字符型的原理及应用
- 运算符与表达式
1.1 数据类型
C语言中有部分关键字,变量不能与关键字重名(具体名字参考百度)
1.2 常量
常量:程序运行过程中,其值不发生变化的量,常量分为:整型、实型(浮点型)、字符型、字符串型
整型常量、实型常量、字符型常量是在编译时可以直接编入代码短的常量;
字符型常量:存放在字符型常量区中的常量:"你好"、ASCII码和文字都是字符串常量
1.3 变量
变量:具有特定属性的一个存储单元,它用来存放数据(变量的值),这些值在程序执行过程中可以改变
变量名——实际上以一个名字对应一个存储单元地址
编译、链接程序时,由编译系统为每个变量名分配对应的内存单元,从变量中取值实际上就是通过变量名找到内存中存储单元的地址,并从该单元中读取数据
变量的命名规定:C中:字母、数字和下划线(且第一个字符必须为字母或下划线)
编译系统认为大写字母和小写字母是不同的字符,C语言要求对所有用到的变量做强制定义,先定义、后使用,最好见名知意
PS:变量名不能与关键字同名!
PS:变量名不能与关键字同名!!
PS:变量名不能与关键字同名!!!(重要的事说三遍)
1.4 整型数据
1.4.1 符号常量
定义一个整型变量时要使用关键字 int。
整型变量i有自己的内存空间,因此既可以存储整型常量123,又可以存储Pi*2(3*2);
#include<stdio.h> #include<stdlib.h> #define Pi 3 //Pi 是常量 int main() { int i = 123;//i是变量,123是整型常量,将常量123赋值给变量i i = Pi*2; //Pi=2; 常量不可修改 printf("Pi=%d\n",Pi); printf("i=%d\n",i); system("pause"); return 0; }
有define定义的Pi为什么是常量呢?可以通过改变编译设置来了解什么是预处理(右键单击对应的项目,选择“属性”,将“预处理到文件”设置为“是”)
设置完毕后,重新编译会编译失败,因为开启了预编译后只进行预处理,而不再进行其他编译动作,右键单击项目,选择在文件资源管理器中打开文件夹,在窗口中打开Debug文件夹
找到main.i文件,使用Notepad++打开,并直接滚到结尾,可以发现define已经不存在,因为预处理会消除所有define,同时用define将Pi定义为3,编译器在预处理后会把代码中出现的所有常量Pi替换为3,所以Pi是常量,不可修改(此作用可应用于在程序中多次用到某个常量,可以使用define定义来简化操作)
1.4.2 整型常量的不同进制表示
进制表示不单独说了,详细可以看跳转这一篇文章:进制表示——C语言
1.4.3 整型变量
int i,变量i是4个字节
1.5 浮点型数据
1.5.1 浮点型常量
表示浮点型常量的形式有两种:
小数形式 0.123 指数形式 3e-3(3 x 10^-3 = 0.003)
PS: 字母e或(E)之前必须有数字,且e后面的指数必须为整数
1.5.2 浮点型变量
通过float f 来定义浮点变量 f占用4个字节空间
1.6 字符型数据
1.6.1 字符型常量
用单引号括起来的一个字符是字符型常量,且只包含一个字符!
例如:'a'、'A'、'T'、' '是正确的字符型常量,而'123' 、"a"、" "是错误的
其中包含特殊转义字符,以"\"开头的特殊字符成为转义字符,转义字符用来表示回车、退格等功能
转义字符 | 作用 |
\n | 换行 |
\b | 退格 |
\\ | 反斜杠 |
2.6.2 字符数据在内存中的存储形式及其使用方法
字符型变量使用关键字char定义,一个字符型变量占用1字节空间
一个字符型常量存放到一个字符型常量中,实际上并不是把该字符的字型放到内存中,而是把该字符的ASCII码值放到存储单元中。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char c, d;
c = 97;
d = 'a';
printf("c=%c,d=%c\n", c,d);
printf("c=%d,d=%d\n", c, d);
c = c - 32;
printf("c=%c\n", c);
system("pause");
return 0;
}