第二章 变量、数据类型及运算符
内存如何存放数据
- 计算机使用内存来记忆或存储计算十所使用的数据
- 计算机执行程序时,组成程序的指令和程序所操作的数据都必须存放在某个地方
- 这个地方就是计算机的内存
- 也称为主存(main memory)或随机访问存储器(Random Access Memory,RAM)
变量
- 变量是计算机中一块特定的内存空间
- 由一个或多个连续的字节组成
变量的命名
通过变量名可以简单快速地找到在内存中存储地数据
C语言变量命名规则
- C语言规定变量名(标示符)只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线
- 变量名不能包含除 “ _ ” 以外地任何特殊字符,如:%、#、逗号、空格等
- 不可以使用保留字/关键字
正确的变量名
- Radiu salary AotuGun Knotted_Wool H301
非法的变量名
- 9_Ball 6_pack Hash!
数据类型
见图a
数据类型 | 类型说明符 | 位数 | 取值范围 |
---|---|---|---|
整型 | int | 32 | -2147483648~+2147483647 |
短整型 | short int | 16 | -32767~+32768 |
长整型 | long int | 32 | -2147483648~+2147483647 |
单精度浮点型 | float | 32 | -3.4E-38~+3.4E+38 |
双精度浮点型 | double | 64 | 1.7E-308~1.7E308 |
字符型 | char | 8 | -128~+127 |
- 字符型用于存储单个字符
- 一般可以用来表示:性别(‘男’或‘女’),选项(‘A’,‘B’,‘C’,‘D’),成绩(‘优’,‘良’,‘中’,‘差’)等
其他类型
- 构造类型、指针类型、空类型等
声明和使用变量
声明变量:
- DataType variableName; //数据类型 变量名;
定义时初始化变量
- DataType variableName = value; //数据类型 变量名 = 值;
定义后初始化变量
- DATaType variableName; //数据类型 变量名;
- variableName = value; //变量名 = 值;
使用整型变量
声明整型变量:
- int score totle;
- short int studentNo;
- long id_card;
初始化变量
- score_totle = 590;
- studentNo = 20;
1 | //小明的月薪2500 |
注意:
1、变量名注意不要重复
2、一条语句可以声明多个类型相同的变量
1 | int core_totle,no,sum,width,height; |
打印整型变量
1 | //小明的月薪2500 |
- 转换说明符
- 转换说明符确定变量在屏幕上的显示方式
- %表示转换说明符的开头
- %d表示salary输出为一个十进制数字
- %%将会输出一个%
1 | //试试一个变量稍多的程序 |
使用单精度浮点型变量
float:
- 位数:32位
- 空间:4个字节
- 取值范围:10^-38^至10^+38^
- 7位有效数字
声明及初始化
- float flowerPrice = 150.0;
- float cookies;
- cookies = 98.5f;
1 | //已知长方形的宽和高,求长方形的面积 |
注意:
1、float类型变量赋值时需要在数值的末尾加上一个f
2、float类型的占位符是%f
3、%2f可以控制数字的显示精度
使用双精度浮点型变量
double:
- 位数:64位
- 空间:8个字节
- 取值范围:10^-108^至10^+308^
- 16位有效数字
声明及初始化
- double total = 1547.2598754;
- double values;
- values = 98.5;
1 | //已知圆的半径,求圆的面积 |
注意:
1、通常小数被存储为double类型,如2.0和9.0
2、数字后使用L时,数字成为long double类型,如4.76L
使用字符型变量
char:
- 位数:8位
- 空间:1个字节
- 取值范围:-128~+127
声明及初始化
- char sex = ‘m’;
1 | //打印字符对应的ASCII码 |
注意:
1、有符号signed char,取值范围-128~127
2、无符号unsigned char,取值范围0~255
3、char类型是否有符号取决于编译器
常用ASCII码汇总表
值 | 符号 | 值 | 符号 | 值 | 符号 | 值 | 符号 |
---|---|---|---|---|---|---|---|
0 | 字符\0 | 42 | * | 62 | > | 123 | { |
32 | 空格 | 43 | + | 63 | ? | 124 | | |
33 | ! | 44 | , | 64 | @ | 125 | } |
34 | “ | 45 | - | 65~90 | A~Z | 126 | ~ |
35 | # | 46 | . | 91 | [ | 127 | DEL(Delete键) |
36 | $ | 47 | / | 92 | \ | ||
37 | % | 48~57 | 0~9 | 93 | ] | ||
38 | & | 58 | : | 94 | ^ | ||
39 | ‘ | 59 | ; | 95 | _ | ||
40 | ( | 60 | < | 96 | ` | ||
41 | ) | 61 | = | 97~122 | a~z |
printf函数和转换字符
转换字符 | 输出 | 实例 |
---|---|---|
%d or %l | 有符号十进制整数 | printf(“%d心%i意\n”,3,2); |
%c | 单个字符 | printf(“少林功夫好(y/n)~%c\n”,’y’); |
%s | 字符串 | printf(“爱我的人%s,我爱的人%s\n”,”呵呵呵”,“老美了”); |
%f | 浮点数,默认精确到6位小数 | printf(“圆周率:%.2f\n”,3.1415926); |
%% | 打印一个百分号 | printf(“手游占中国网络游戏海外发行细分市场的65%%”); |
转义序列
转义序列 | 名称 | 描述 |
---|---|---|
\a | 风鸣警报 | 在一些系统中警报不起作用 |
\b | 退格 | 将光标回退一格 |
\f | 换页 | 将光标移到下一页的开始处 |
\n | 换行 | 将光标移到下一行的开始处 |
\r | 回车 | 将光标移到当前行的开始处 |
\t | 水平制表 | 将光标移动到下一个水平制表位置 |
\v | 垂直制表 | 将光标移动到下一个垂直制表位置 |
\ ‘ | 单引号 | *用于打印单引号、双引号、问号、反斜 |
\ “ | 双引号 | *线等字符(由于这些字符用于定义字符 |
? | 问号 | *常量,是printf函数的一部分,若直接使 |
\ \ | 反斜线 | *用回造成混乱) |
scanf函数
概述
- C函数库包含了多个输入函数,scanf是最通用的一个,可以读取不同格式的数据
基本用法
1 | int num; |
转换字符串 | 含义 |
---|---|
%d | 把输入解释成有符号整型 |
%c | 把输入解释成字符型 |
%s | 把输入解释成字符串 |
%f | 把输入解释成单精度浮点数 |
%lf | 把输入解释成双精度浮点数 |
注意:
1、格式字符串的用法与printf函数类似
2、读取基本类型的值时,变量前要加&符号
算数运算符与表达式
算术运算符
- 一元运算符:++、–
- 二元运算符:+、-、*、/、%
表达式
- a = (b + 3) + (b - 1)