IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 第二章——数据结构、运算符与表达式 -> 正文阅读

[数据结构与算法]第二章——数据结构、运算符与表达式

2.1C语言的数据类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eNJ8N6Vp-1629733118031)(C:\Users\33385\AppData\Roaming\Typora\typora-user-images\image-20210823002003170.png)]

常见数据类型所占内存的大小
数据类型32位操作系统(字节)64位操作系统(字节)
char11
short(unsigned short)22
int(unsigned int)44
float44
double88
long 4 \color{red}{4} 4 8 \color{red}{8} 8
long long88
常见数据类型的取值范围
数据类型最小值最大值所占字节
char-1281271
short-32767327682
unsigned short0655362
int-214748364821474836474
unsigned int042949672954
long-214748364821474836274
long long-92233720368547758079223372036854775808

从上面也可以看出,在32位操作系统中,是没有 long 这种数据类型的,因为其和 ing 的所有属性都一样

常量和变量

常量: 分为整型常量、浮点型常量和字符常量

其中, % d \%d %d 是一个格式符,专门用来显示一个十进制的整数

**保留字:**系统保留下来的有特殊用途的,如 return if 等

**变量:**值可以改变的量

**标识符:**就是常量变量等的名字

整型数据
  • 整型数据分为 十进制数 、 八进制数 、 十六进制数

    ? 其中八进制数以 0 开头,而十六进制数以 0x 开头

    ? 八进制数演示范例如下:

int a = 012;
printf ("%d\n", a);   // 从这里也可以看出 %d 是专门显示十进制整数的
输出:10

? 十六进制数演示范例如下:

int b = 0x12
printf ("%d\n", b);
输出:18
  • 整型数据分为 int 、short int、 long int 以及对应的无符号型

值得一提的是,可以用 sizeof( 运 算 符 \color{green}{运算符} )来获取某一个变量所占用的内存大小(字节)

int a;
printf ("%d\n", sizeof(a));
输出:4
  • 关于常量的应用

在一个常量后面加 U(u)、L(l)、F(f) 分别代表 无符号型,即 unsigned int ; 长整型,即long;浮点型,即float

long int a = 123L;
int a = 23.12F;
unsigned int = 23U;
实型数据
  • 表示方式:十进制数表示形式,如 2.2 , 3.1415等 ; 指数表示形式(整型也可以这样表示,但是会warning),如 132e2 表示132 × 1 0 2 \times 10^2 ×102

  • 分类:float 和 double

    两者的精度不同,float提供 7 位有效数字,但是四舍五入的话,精确只有 6 位 ; double 提供 15~16 位有效数字,保守算 15位

    • **对于有效数字的解释:**比如拿数字 12345.678 来说,如果精度为 1 的话,则计算机只能存储 10000.0 只能存储最高位 ;

      如果精度为 3 的话,则计算机存储的是 12300.0 。再拿数字 0.1234,精度为 1 的话,

字符型数据
  • **字符常量:**用单引号包含起来的一个字符
  • **转义字符:**以 “” 开头的字符序列,一般常用的有 “\n”, "\ \ “, “\’” , “\””
  • **字符变量:**字符变量在内存中占一个字节,只能存一个字符,并且,其本质上是存储的ASCII表上对应的数字。因此字符型数据和整型数据之间可以互通使用
字符串变量

用双引号包含的一串字符,这里有一个有意思的细节

// 这是C语言的知识
char c = 'a';
char s = "a";
c 只占 1 个字节,但是 s 占 2 个字节,这是因为 s 中在字符串的末尾,系统自动加入了一个 \0,作为结束的标志 
   
printf ("abcde\0fgh");
// 最后输出的就是 abcde
不同数据类型间的混合运算

原则:系统会将参与运算的变量中的能表达最大数字的变量类型作为运算结果的类型,比如 int 和 float 类型混合计算,最终结果是float ; char 和 int 混合运算,最终结果是 int

2.2C语言的运算符

编号类别名称内容
1算术运算符 + 、 ? 、 ? 、 / 、 % +、-、*、/、\% +??/%
2关系运算符>、<、==、>=、<=、!=
3逻辑运算符!、&&、||
4位运算符<<、>>、~、| 、^、&
5赋值运算符= 以及多个复合赋值运算符
6条件运算符?:
7逗号运算符
8指针运算符* 、&
9求占字节数运算符sizeof()
10成员变量运算符. 、->
11下标运算符[]
12强制类型转换运算符(类型名)
13等等
算术运算符合算术表达式

$+、-、\times 、/ $ 不必赘述,值得一提的是取模运算 % \% %?, 这个运算符要求左右两边必须均为整数, 比如 7 % 4 = 3。当然,整数的除法运算会舍弃小数部分也是一个坑点

运算符优先级的问题

原则:从左到右,括号最大

强制类型转换运算符

语法:(类型名)(表达式名)

注意事项:

  • 以 b = (double) a 为例,转换后 a 的类型并没有发生变化,只是结果变成了 double 类型
  • int (x + y)指将 x + y 的和转换,int (x) + y 值将 x 转换
自增和自减运算符

表示为:++ 和 – ,含义是使值加 1 或者 减 1

++i; // 先加 1 后使用
--i; // 先减 1 后使用
i ++: // 先使用后加 1 
i --: // 先使用后减 1

2.3赋值运算符和赋值表达式

  • 赋值运算符:
    • 赋值原则是保证等号左右两边的数据类型是相同的
    • 赋值运算符的优先级很低
// 这是变量声明
int a;
// 这是赋值
a = 100;
// 这是定义时初始化
int a = 100;
  • 复合的赋值运算符

总结:需要把右边看成一个整体,相当于加了一个括号,因为赋值号的优先级太低了

a += 3 等价于 a = a + 3
a *= y + 8 等价于 a = a * (y + 8)
  • 赋值表达式的值(赋值表达式本身有值)

赋值表达式的值就是赋值运算符右边的值

int a;
printf ("%d\n", a = 5);
// 输出结果是:5
逗号表达式详解

逗号运算符是优先级最低的运算符,甚至比赋值运算符还低,一般来说,逗号表达式的形式是 (表达式 1 ,表达式 2 … \dots

表达式 n),我们需要把括号里面当做一个整体(可以认为用逗号连接),这个整体的值是表达式 n 的值

int a;
a = (4, 5); // a = 5
a = (3 + 5, 5 * 6); // a = 30
a = 3 * 5, a * 4; //先计算 a = 15,然后计算 a * 4 的值

般来说,逗号表达式的形式是 (表达式 1 ,表达式 2 … \dots

表达式 n),我们需要把括号里面当做一个整体(可以认为用逗号连接),这个整体的值是表达式 n 的值

int a;
a = (4, 5); // a = 5
a = (3 + 5, 5 * 6); // a = 30
a = 3 * 5, a * 4; //先计算 a = 15,然后计算 a * 4 的值
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-08-24 15:48:54  更:2021-08-24 15:49:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 23:01:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码