《C语言深度剖析》第二章 符号详解 p1 C语言从入门到入土(进阶篇)(二)

简介: 本章节文章是作者通过观看《C语言深度剖析》等各种资料总结的精华,基础部分省略了不少,是为了让大家能够更加深入了解C语言的魅力!因为为了避免与之前的文章发生赘述,所以就直接讲作者认为的精华部分哈!现在正文开始!

1.4.2 转意作用

C 中,有一些字符,就是他的字面意思,比如 'n' , 'b' , 't' 。

也有一些字符,本身就是特殊含义的,比如: " , ', \

转义的本质含义是:字面转特殊,或者特殊转字面


1.1 字面转特殊:想输出‘’(我只想得到字面上的‘’就可以用反斜杠转意)


61.png62.png


1.2 特殊转字面:这里是字面的n去显示,但是我们想要n字符对应特殊字符,就可以加上\变成换行符。


63.png

2. \r vs \n


2.1 问:回车和换行是一样的吗?是什么?

不一样。回车是指光标回到当前行的最开始。

             换行是指光标移动至下一行。

我们一般讲的“回车”其实是回车加上换行。

在我们计算机语言中\n其实也是回车兼换行,想单独用回车就用\r就可以了。


64.png


2.2 打印出来d,为什么呢?超过四个元素就会报错,又为什么呢?

65.png

2.3 为什么等于4呢?

66.png


发现linux也是这样的?

//单引号是字符,双引号是字符串
#include <stdio.h>
#include <windows.h>
//不同编译器,会有细微的差别
int main()
{
        printf("%d\n", sizeof(1));
        printf("%d\n", sizeof("1"));
//C99标准的规定,'a'叫做整型字符常量(integer character constant),被看成是int型
        printf("%d\n", sizeof('1'));
        char c = '1';
        printf("%d\n", sizeof(c));
        system("pause");
        return 0;
}

67.png

在C语言中:char类型一个字节是没有错的,但是单引号1或者a是占4个字节,只是说我们一直是把一个整型的大小放进了char里面(赋值发生了截断)。也回应了我们之前说的,字符类型也就是整型。(C++是一个字节)

68.png

但是在“”中,大小就是按一个字节算的。


然后再回到之前的问题:为什么总是拿最后一个字符?


因为我们刚刚说到了,单引号里面是四个字节空间大小的,然后我们要放进char(一个字节空间大小)里面,就发生截断然后根据我们的大小端(这里都是小端),所以就拿低地位的数据即最后一个数据。


总结说:我们单引号括起来的字符在C语言是占4个字节的,但是放到char里面就会截断为1个字节。


2.4 为何计算机需要字符

计算机本质只认识二进制,那么计算机为何需要字符呢?直接全部二进制不香吗?

因为计算机是为了解决人的问题,可是,人怎么知道计算机解决了人的问题??你输出二进制结果,人能直接看懂吗?

所以,为何计算机需要需要字符,本质是为了让人能看懂。

那为什么又是英文的呢 ? 中文不香吗?

最早的计算机是美国人发明的,他们的语言是英语,大家想想,英语,不就是 26 个英文字母 + 一大堆标点符号组成的吗?

另外,计算机刚刚开始发明,人美国人只要能解决他们的问题就行,所以就有了现在的简单字符

计算机只认识二进制,而人只认识字符。所以,一定要有一套规则,用来进行二进制和字符的转化,这个就叫做 ASCII 码表


69.png


2.5 printf scanf格式化输入输出的补充

printf 格式化输出:就是把整型数据输出到显示器中,按字符的形式。

scanf 格式化输入:特定数据(字符)变成整数(%d),这就是格式成你想要保存到内存中想要显示的数据。


71.png


72.png

这是字符0

只有‘\0’才是真正的0。


3. &&  和  ||


3.1 短路

上面的一个条件不满足,已经不需要在看后续的条件的情况,就叫做短路


73.png74.png

注意:计算机都是从左向右扫描的。


4. 位运算

位运算符有: &(按位与) |(按位或)^(按位异或) ~(按位反,包括符号位)

提一下:


75.png



打印出来就是-1。

交换两个整数(之前文章详细说过这里就只再提一下)

#include <stdio.h>
#include <windows.h>
int main()
{
int x = 10;
int y = 20;
printf("before: %d,%d\n", x, y);
x ^= y;
y ^= x;
x ^= y;
printf("after: %d,%d\n", x, y);
system("pause");
return 0;
}

4.1 设置指定比特位为1


76.png77.png


4.2  显示int的所有比特位

78.png


4.3 将指定比特位清0

例如将第6位清0:1001 0110 1011 1000 1111 1000 0111 1000

我们就需要 &= : 1111 1111 1111 1111 1111 1111 1101 1111

那怎么得到上面的数? 那就是:~(1<<(n-1))

79.png

补充:一个整型提升的问题

80.png


也就是说sizeof并不是在程序运算的时候计算的。

并且运算的时候会将数据进行基本的整型提升。


4.4 << 和 >>

81.png82.png


即补什么取决于自身的类型,和内部保存的数据无关。



今天的内容就到这里了哈!!!

要是认为作者有一点帮助你的话!

就来一个点赞加关注吧!!!当然订阅是更是求之不得!

最后的最后谢谢大家的观看!!!

你们的支持是作者写作的最大动力!!!

下期见哈!!!  

相关文章
|
7月前
|
存储 编译器 C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
88 0
|
20天前
|
C语言
【C语言】符号优先级详解 -《谁与争锋 ! 》
理解C语言中的运算符优先级和结合性是编写正确代码的关键。本文详细介绍了C语言中的各种运算符、它们的优先级和结合性,并通过示例展示了如何正确使用这些运算符。掌握这些知识,将有助于编写出逻辑严谨、结构清晰的C语言程序。
57 8
|
7月前
|
存储 小程序 编译器
c语言内功修炼--深度剖析数据的存储
c语言内功修炼--深度剖析数据的存储
|
7月前
|
C语言 C++ 索引
C语言符号——操作符详解
C语言符号——操作符详解
C语言符号——操作符详解
|
7月前
|
存储 C语言
C语言结构体深度剖析
C语言结构体深度剖析
|
7月前
|
存储 小程序 编译器
C语言进阶—深度剖析数据在内存中的存储
C语言进阶—深度剖析数据在内存中的存储
|
7月前
|
存储 小程序 C语言
【深度剖析数据在内存中的存储】C语言
【深度剖析数据在内存中的存储】C语言
|
20天前
|
存储 C语言 开发者
【C语言】字符串操作函数详解
这些字符串操作函数在C语言中提供了强大的功能,帮助开发者有效地处理字符串数据。通过对每个函数的详细讲解、示例代码和表格说明,可以更好地理解如何使用这些函数进行各种字符串操作。如果在实际编程中遇到特定的字符串处理需求,可以参考这些函数和示例,灵活运用。
39 10
|
20天前
|
存储 程序员 C语言
【C语言】文件操作函数详解
C语言提供了一组标准库函数来处理文件操作,这些函数定义在 `<stdio.h>` 头文件中。文件操作包括文件的打开、读写、关闭以及文件属性的查询等。以下是常用文件操作函数的详细讲解,包括函数原型、参数说明、返回值说明、示例代码和表格汇总。
42 9
|
20天前
|
存储 Unix Serverless
【C语言】常用函数汇总表
本文总结了C语言中常用的函数,涵盖输入/输出、字符串操作、内存管理、数学运算、时间处理、文件操作及布尔类型等多个方面。每类函数均以表格形式列出其功能和使用示例,便于快速查阅和学习。通过综合示例代码,展示了这些函数的实际应用,帮助读者更好地理解和掌握C语言的基本功能和标准库函数的使用方法。感谢阅读,希望对你有所帮助!
31 8