本文共 3031 字,大约阅读时间需要 10 分钟。
在前面的 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、变量的声明与赋初值(实例)
#includeint 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 | , | 逗号运算符 | 顺序求值运算 | 自左向右 |
转载地址:http://vjuzi.baihongyu.com/