C语言编程0基础学习历程(2)—— 常量和变量
目录
在前面的 Hello World !中的 “Hello World!” 就是一种数据,在C语言中属于字符串类型。那么C语言中数据都有哪些类型呢?C语言又是以什么方式处理数据的呢?
实际上C语言程序处理的数据有变量和常量两种形式。
一、常量(在程序执行过程中不可以改变的量)
如同人类社会,常量们也有自己的组织与分工。常量按类型可分为四种:整型常量、实型常量、字符常量、字符串常量。此外,常量还分 有符号整型 和 无符号整型 两种:
(1)有符号常量 :一个二进制数在存储单元中,其最高位用来表示数的正负。
(2)无符号常量 :所有二进制位都用来表示数据。(非负数)
1、整型常量(关键字:int)
包括数学中的正整数、负整数、0。
常用的整数常量表现形式:
(1)整型常量(int)
(3)长整型(long)
(4)短整型(short)
附:表1
类型 | 取值范围 |
---|---|
int | -2147483648~2147483648 |
short int | -32768~32767 |
signed int | -2147483648~2147483648 |
unsigned int | 0~4294967295 |
long int | -2147483648~2147483647 |
unsigned long | 0~4294967295 |
表2
类型 | 所占字节(Turbo C 2.0编译环境) | 长度(单位:位) |
---|---|---|
char | 1 | 8 |
int | 2 | 16 |
short int | 2 | 16 |
long int | 4 | 32 |
float | 4 | 32 |
double | 8 | 64 |
表3
类型 | 所占字节(Code::Blocks编译环境) | 长度(单位:位) |
---|---|---|
char | 1 | 8 |
int | 4 | 32 |
short int | 2 | 16 |
long int | 4 | 32 |
float | 4 | 32 |
double | 8 | 64 |
2、实型常量
表示范围为实数范围,使用浮点数(小数点位置不固定的数)进行表示。
浮点型有两种表示方式:1、标准小数点表示法(用来表示小数) 2、E表示法(即科学计数法,用来表示非常大和非常小的数)例如 8.33E-4=0.000833。(注:数与E/e之间无空格)
常见表现形式
(1)单精度浮点型
(2)双精度浮点型
附 表4
类型 | 取值范围 |
---|---|
float | 3.4e–38~3.4e+38 |
double | 1.7e–308~1.7e+308 |
表5
类型 | 所占字节 | 长度 |
---|---|---|
float | 4 | 32 |
double | 8 | 64 |
3、字符常量
用一对单引号括起来的任意字符,如:‘n’、‘m’、‘X’、‘0’等。
4、字符串常量
用一对双引号括起来的零个或多个字符,如:“”、“Hello World!”。
二、变量(其值在运行过程中可以改变的量)
变量们如同人们的公司,公司不能移动,但是公司里的人却可以。
定义变量的一般形式:关键字 变量名;
1、关键字
所谓关键字就是C语言预先规定的、具有特殊意义的单词,它常用于声明变量的类型。而变量类型又决定了编译器为其分配内存单元的字节数、数据在内存单元中的存放形式、该类型变量合法的取值范围以及该类型变量可参与的运算种类等等。
附 表6
关键字 | 说明 |
---|---|
auto | 自动变量 |
break | 跳出当前循环 |
case | 开关语句分支,和switch连用 |
char | 字符型 |
const | 常数 |
continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的其他分支 |
do | 循环,与while搭配使用 |
double | 双精度实型 |
else | 条件语句否定分支,与if连用 |
enum | 声明枚举类型 |
extern | 外部声明 |
float | 浮点型 |
for | 循环 |
goto | 无条件跳转 |
if | 条件 |
int | 整型 |
long | 长整型 |
register | 声明寄存器变量 |
return | 函数返回语句,可以带参数,也可以不带 |
short | 短整型 |
signed | 有符号类型 |
sizeof | 计算数据类型长度 |
static | 声明静态 |
struct | 结构体 |
switch | 用于开关语句 |
typedef | 给数据类型起别名(小名) |
union | 声明共用体变量 |
unsigned | 无符号类型 |
void | 声明函数无返回值或无参数,声明无类型指针 |
volatile | 说明变量在程序执行中可以被隐含改变 |
while | 循环条件 |
2、变量名
变量名就是用户定义的标识符,好比是人的身份证,却又有些许不同。它用于标识内存中一个具体的储存单元,其中存放的数据称为变量的值(标识符区分大小写)。
其命名遵循以下原则:
(1)、标识符只能由字母、数字和下划线组成。
(2)、标识符必须由字母或下划线开头。
(3)、不允许用C关键字为标识符命名。
3、变量声明的意义
世间万物存在皆有他的道理,变量的声明也是如此,其存在有以下几点作用:
(1)建立变量符号表,使编译器可以在编译期间发现因疏忽而写错的变量名;
(2)变量的数据类型指示系统分配多少内存空间;
(3)变量的数据类型指示系统如何解释储存空间中的值;
(4)变量的数据类型确定该变量的取值范围;
4、变量的声明与赋初值(实例)
#include <stdio.h>
int main ()
{
int a=1,b=1; //整型声明与赋值
float c=2,d=2; //单精度浮点型声明与赋值
double e=3; //双精度浮点型声明与赋值
char ch='W'; //字符型声明与赋值
printf("%d\n",a+b);
printf("%f\n",c+d);
printf("%lf\n",e);
printf("%c\n",ch);
return 0;
}
其中 ‘=’ 为赋值符号,复制形式也可写为 a=b=c 此类的赋值表达式,称为多重赋值。在计算不同类型表达式时,要考虑运算符的优先级。
附 表7
优先级 | 运算符 | 含义 | 运算类型 | 结合方向 |
---|---|---|---|---|
1 | ( ) [ ] -> . ++(后缀)、- -(后缀) |
圆括号、函数参数表 数据元素下标 指向结构体成员 引用结构体成员 后缀增一、后缀减一 |
— | 自左向右 |
2 | ! ~ ++(前缀)、- -(前缀) - * & (类型标识符) sizeof |
逻辑非 按位取反 增一、减一 求负 间接寻址符 取地址符 强制类型转换符 计算字节数运算符 |
单目运算 | 自右向左 |
3 | * / % |
乘法运算 除法运算 整数求余 |
双目运算 | 自左向右 |
4 | + - |
加法运算 减法运算 |
双目运算 | 自左向右 |
5 | <<、>> | 左移、右移 | 位运算 | 自左向右 |
6 | <、<= >、>= |
小于、小于等于 大于、大于等于 |
关系运算 | 自左向右 |
7 | ==、!= | 等于、不等于 | 关系运算 | 自左向右 |
8 | & | 按位与 | 位运算 | 自左向右 |
9 | ^ | 按位异或 | 位运算 | 自左向右 |
10 | | | 按位或 | 位运算 | 自左向右 |
11 | && | 逻辑与 | 逻辑运算 | 自左向右 |
12 | || | 逻辑或 | 逻辑运算 | 自左向右 |
13 | ?: | 条件运算符 | 三目运算符 | 自右向左 |
14 | = +=、-=、*=、/=、%= &=、^=、|=、<<=、>>= |
赋值运算符 复合的赋值运算符 |
双目运算 | 自右向左 |
15 | , | 逗号运算符 | 顺序求值运算 | 自左向右 |