量的变与不变

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 逗号运算符 顺序求值运算 自左向右
发布了11 篇原创文章 · 获赞 3 · 访问量 1104

猜你喜欢

转载自blog.csdn.net/qq_43869033/article/details/86536110