C语言基础——变量

二、变量

2.1 变量基本概述

变量是程序的基本组成单位,变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,从而通过变量名可以访问到变量(值)

变量应该有名字,并在内存中占据一定的存储单元;变量名和变量值有不同的含义;变量名实为一个符号地址
C语言基础——变量_第1张图片

2.1.1 变量的使用步骤:

//(1)声明变量:
int num;
//(2)赋值:
num = 60;
// (3)使用:
printf("num=%d", num);
// (4) 变量声明与赋值一步到位:
int num = 60;

2.1.2 变量的使用注意事项:

(1)变量表示内存中的一个存储区域(不同的数据类型,占用的空间大小不一样);
(2)该区域有自己的名称和类型;
(3)变量必须先声明,后使用
(4)该区域的数据可以在同一类型范围内不断变化;
(5)变量在同一个作用域内不能重名;
(6)变量三要素(变量名+值+数据类型)。

2.2 变量的数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(使用字节多少表示)。数据类型决定了其取值范围,及可以进行的操作。
C语言基础——变量_第2张图片

注意

  1. C 语言没有字符串类型,用字符数组表示字符串;
  2. 在不同系统上,部分数据类型字节长度不一样。

2.2.1 字节和位

  1. 变量名实为一个符号地址
  2. 内存以字节为单元组成
  3. 每个字节有一个地址
  4. 一个字节一般由8个二进制位组成
  5. 每个二进位的值是0或1

2.3 整型

各种类型的存储大小与操作系统、系统位数和编译器有关。
整型的类型

类型 存储大小 值范围
char 1字节 − 2 7 到 2 7 − 1 -2^7 到 2^7-1 27271
unsigned char 1字节 0 到 2 8 − 1 2^8-1 281
signed char 1字节 − 2 7 到 2 7 − 1 -2^7 到 2^7-1 27271
int(signed int) 2字节或4字节 { − 2 15 到 2 15 − 1 -2^{15}到2^{15}-1 2152151} 或 { − 2 31 到 2 31 − 1 -2^{31}到2^{31}-1 2312311}
unsigned int 2字节或4字节 {0到 2 16 − 1 2^{16}-1 2161} 或 {0到 2 32 − 1 2^{32}-1 2321}
short(signed short) 2字节 { − 2 15 到 2 15 − 1 -2^{15}到2^{15}-1 2152151}
unsigned short 2字节 {0到 2 16 − 1 2^{16}-1 2161}
long(signed long) 4 字节 { − 2 31 到 2 31 − 1 -2^{31}到2^{31}-1 2312311}
unsigned long 4 字节 { 0 到 2 32 − 1 0到2^{32}-1 02321}

整数常量的表示方法:
C语言基础——变量_第3张图片
注意:

  1. 整型数据的溢出
  2. 在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、0L;
  3. 在整型常量后面加u,则按无符号整型方式存放,负数转换成补码再按无符号整型方式存放。

2.4 浮点型

类型 存储大小 值范围 有效数字
float单精度 4字节(32位) 1.2 × 1 0 − 38 到 3.4 × 1 0 38 1.2\times10^{-38}到3.4\times10^{38} 1.2×10383.4×1038 6~7
double双精度 8字节(64位) 2.3 × 1 0 − 308 到 1.7 × 1 0 308 2.3\times10^{-308}到1.7\times10^{308} 2.3×103081.7×10308 15~16
long double 长双精度 16字节(128位) 18~19

浮点型注意事项:
3. 浮点型常量默认为double型,声明float型常量时,须后加‘f’或‘F’;
4. 浮点型常量有两种表示形式:十进制数形式 / 科学计数法形式
5. 通常情况下,应使用double型,更加精确。

数据类型按精度大小排序
C语言基础——变量_第4张图片

2.4.1 数据类型的自动转换规则:

C语言基础——变量_第5张图片

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度最大的那种数据类型,然后再进行计算(如int型和 short型运算时,先把short转成int型后再进行运算);
  2. 若两种类型的字节数不同,转换成字节数大的类型,若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型;
  3. 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将转换为左边的类型,如果右边变量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。

2.4.2 强制类型转换

精度高的数据类型转换为精度小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。

强制类型转换的格式为:

(类型名)(表达式);
//例如:
double a = 1.13;
int num = (int)a; //需注意,不是进行四舍五入,而是直接截断小数后的部分
(double)(1+2);

(1)强制类型转换操作并不改变操作数本身;
(2)当进行数据的从精度高——>精度低,就需要使用到强制转换;
(3)强转符号只针对于最近的操作数有效,往往使用小括号提升优先级。

2.5 字符型

2.5.1 概述

字符类型可以表示单个字符,字符类型是char,char是1个字节(可以存字母或者数字),多个字符称为字符串,在C语言中使用char数组表示,数组不是基本数据类型,而是构造类型。

(1)字符常量是用单引号 (") 括起来的单个字符。例如: char c= ‘a’;
(2)C中还允许使用转义字符 ‘’ 来将其后的字符转变为特殊字符型常量。例如: char c3=‘\n’; '\n’表示换行符;
(3)在C中,char的本质是一个整数,在输出时,是ASCII码对应的字符;
(4)可以直接给char赋一个整数,然后输出时,会按照对应的ASCII字符输出;
(5)char类型是可以进行运算的,相当于一个整数,因为它都对应有Unicode码。

2.5.2 字符编码

字符和码值的对应关系是通过字符编码表决定的。字符型变量存储到计算机中,需要将字符对应的**码值(整数)**找出来,例如:
存储:字符 ‘a’ ----> 码值(97)----> 二进制 (1100001)---->存储()
读取:二进制(1100001) ----> 码值(97) ----> 字符 ‘a’ ----> 读取(显示)

2.5.3 字符串常量

字符串常量: 用**双引号("")**括起来的字符序列;
其储存为在每个字符串尾自动加一个 ‘\0’ 作为字符串结束的标志,如字符串 “hello” 在内存中为:
在这里插入图片描述

2.5.4 基本数据类型及其对应的限定符

C语言基础——变量_第6张图片
说明:

1)使用格式字符 %i  或  %d  以十进制显示整数值;
(2)使用格式字符 %o 以八进制显示整数值;使用格式字符 %#o 在八进制之前显示一个前导零;
(3)使用格式字符 %x 以十六进制显示整数值;使用格式字符 %#x 在十六进制之前显示一个前导 0x;
(4)使用格式字符 %f 显示浮点数;
(5)使用格式字符 %e 以科学计数法显示浮点数;
(6)使用格式字符 %g 显示浮点数,使得输出格式最美观,输出 %f 或 % e 中较短的一个;
(7)使用格式字符 %c 显示 char 变量的值,输出单个字符;
(8)使用格式字符 %s 输出字符串;

你可能感兴趣的:(C语言,c语言)