C语言基础——变量
二、变量2.1 变量基本概述变量是程序的基本组成单位,变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,从而通过变量名可以访问到变量(值)。变量应该有名字,并在内存中占据一定的存储单元;变量名和变量值有不同的含义;变量名实为一个符号地址2.1.1 变量的使用步骤://(1)声明变量:int num;//(2)赋值:num = 60;// (3)
二、变量
2.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.2.1 字节和位
- 变量名实为一个符号地址
- 内存以字节为单元组成
- 每个字节有一个地址
- 一个字节一般由8个二进制位组成
- 每个二进位的值是0或1
2.3 整型
各种类型的存储大小与操作系统、系统位数和编译器有关。
整型的类型
类型 | 存储大小 | 值范围 |
---|---|---|
char | 1字节 | − 2 7 到 2 7 − 1 -2^7 到 2^7-1 −27到27−1 |
unsigned char | 1字节 | 0 到 2 8 − 1 2^8-1 28−1 |
signed char | 1字节 | − 2 7 到 2 7 − 1 -2^7 到 2^7-1 −27到27−1 |
int(signed int) | 2字节或4字节 | { − 2 15 到 2 15 − 1 -2^{15}到2^{15}-1 −215到215−1} 或 { − 2 31 到 2 31 − 1 -2^{31}到2^{31}-1 −231到231−1} |
unsigned int | 2字节或4字节 | {0到 2 16 − 1 2^{16}-1 216−1} 或 {0到 2 32 − 1 2^{32}-1 232−1} |
short(signed short) | 2字节 | { − 2 15 到 2 15 − 1 -2^{15}到2^{15}-1 −215到215−1} |
unsigned short | 2字节 | {0到 2 16 − 1 2^{16}-1 216−1} |
long(signed long) | 4 字节 | { − 2 31 到 2 31 − 1 -2^{31}到2^{31}-1 −231到231−1} |
unsigned long | 4 字节 | { 0 到 2 32 − 1 0到2^{32}-1 0到232−1} |
整数常量的表示方法:
注意:
- 整型数据的溢出;
- 在整型常量后面加大写L或小写l,则告诉编译器,把该整型常量作为long类型处理。例:123L、0L;
- 在整型常量后面加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×10−38到3.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×10−308到1.7×10308 | 15~16 |
long double 长双精度 | 16字节(128位) | 18~19 |
浮点型注意事项:
3. 浮点型常量默认为double型,声明float型常量时,须后加‘f’或‘F’;
4. 浮点型常量有两种表示形式:十进制数形式 / 科学计数法形式
5. 通常情况下,应使用double型,更加精确。
数据类型按精度大小排序
2.4.1 数据类型的自动转换规则:
- 有多种类型的数据混合运算时,系统首先自动将所有数据转换成精度最大的那种数据类型,然后再进行计算(如int型和 short型运算时,先把short转成int型后再进行运算);
- 若两种类型的字节数不同,转换成字节数大的类型,若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型;
- 在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边的类型将转换为左边的类型,如果右边变量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度,丢失的部分按四舍五入向前舍入。
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 基本数据类型及其对应的限定符
说明:
(1)使用格式字符 %i 或 %d 以十进制显示整数值;
(2)使用格式字符 %o 以八进制显示整数值;使用格式字符 %#o 在八进制之前显示一个前导零;
(3)使用格式字符 %x 以十六进制显示整数值;使用格式字符 %#x 在十六进制之前显示一个前导 0x;
(4)使用格式字符 %f 显示浮点数;
(5)使用格式字符 %e 以科学计数法显示浮点数;
(6)使用格式字符 %g 显示浮点数,使得输出格式最美观,输出 %f 或 % e 中较短的一个;
(7)使用格式字符 %c 显示 char 变量的值,输出单个字符;
(8)使用格式字符 %s 输出字符串;
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)