C语言特殊符号
乔乔家的龙龙 人气:1续接符
反斜杠"",他有两种最常见的功能,一就是续航功能,二就是我们提到反斜杠就会很敏感的转义字符。
if("1==a&&2==b&&3==c) { printf("hello\n"); }
有以上的代码我们可以等价于
if("1==a&&\ 2==b&&\ 3==c) { printf("hello\n"); }
这里反斜线就起到了一个连接上下两行的代码,在咱看来是独立的三行但在编译器眼里这仨货就是在同一排。设想一下当我的条件足够多时为了提高代码可读性,我们最好不挤在一排看着又臭又长,分占会显得更加清新,所在大的工程文件里面我们经常会使用续航符号来操作我们代码的美观。
注意:续航符在使用时要注意空格,续航符之前的空格是不存在影响的,但如果放在后面就不能编译。
旋转光标
由我们系统方面的知识和C语言关键字基础,我们就能搞出来一个我们常见的旋转光标:
int main() { int a = 0; const char *spot = "|/-\\"; while(1) { printf("[%c]\n",spot[a]); a++; Sleep(300); } }
效果如下:
单双引号潜规则
char a= 'abc'; printf("%c\n",a);
我们来看看这个代码的结果:
一个问题,我们脑海里学习的知识告诉我们char类型是一个字符,但上面代码不仅不报错还能完完全全打印出来,我把内容换成 ‘abcd’ 依然能打印出一个 d ,再加一个 e 时就会开始报错了,我们就针对这个打印 ‘abc’ 的现象来看看
我们直接对比一下他的字符长度:
擦嘞,为啥 ‘1’ 会是4个字节大小?其实在C99中,这里的 a 叫做整型字符常量,本质上是被编译器看作int类型,所以其实就是在发生着一个截断现象,我们对 char 类型的认知并没有毛病,只是这里一直是在将4个字节的数据保存进一个 char 类型里面。
当然,这种认知也只是存在与C语言里,在C艹中仍然是被解释成一个字节,这也能解释为什么咱四个字节以内都能跑。
短路
很简单,说的就是一个逻辑与 (&&),含义就是一个条件不通过就不需要再看后续的条件的情况就是短路。
ASCII码刚需
为什么咱计算机要搞这么多花里胡哨的符号呢?内存里存的都是二进制数据,即0和1的一串序列,这时所谓的计算机语言,但作为一个person来讲,咱最擅长的不是看0和1,是我们能直观理解的语句。
我们的计算器程序,在计算结果后如果返回的不是十进制数而是一个二进制序列是对我们极为不友好的,特别是不熟悉二进制的普通用户。所以程序会存在一个映射,这个映射机制就是给一个二进制序列安排一个人为设计的符号或图形,比如我屏幕上一个“1234”,在我们眼中它是一个整型1234,但在计算机眼里它就是四个字符。
所以为什么我们手机啥的能更换语言系统,英文,简体中文,繁体中文……,其本质原理就是改了一张映射表。
加载全部内容