C语言特殊符号的补充理解
续接符
反斜杠"",他有两种最常见的功能,一就是续航功能,二就是我们提到反斜杠就会很敏感的转义字符。
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,但在计算机眼里它就是四个字符。
所以为什么我们手机啥的能更换语言系统,英文,简体中文,繁体中文……,其本质原理就是改了一张映射表。
以上就是C语言特殊符号的补充理解的详细内容,更多关于C语言特殊符号的资料请关注我们其它相关文章!
相关推荐
-
C语言字符串操作总结大全(超详细)
1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字符串 strlen(p) 取字符串长度 strcmp(p, p1) 比较字符串 strcasecmp忽略大小写比较字符串strncmp(p, p1, n) 比较指定长度字符串 strchr(p, c) 在字符串中查找指定字符 strrchr(p, c) 在字符串中反向查找 strstr(p, p1
-
C语言中的强符号和弱符号介绍
之前在extern "C" 用法详解中已经提到过符号的概念,它是编译器对变量和函数的一种标记,编译器对C和C++代码在生产符号时规则也是不一样的,符号除了本身名字的区别外,还有强符号和弱符号之分 我们先看一段简单的代码 复制代码 代码如下: /* test.c */ void hello(); int main() { hello(); return 0; } 很显然,这段代码是没法链接通过的,它会报错undefined reference to hello
-
C语言中无符号与有符号及相加问题
C语言中无符号与有符号问题 unsigned char a[5] = { 12,36,96,128,182 }; a[]范围为0~256. 数组中数都有效. char a[5] = { 12,36,96,128,182 }; a[]范围为-128~127. 数组中128和182均无效. C语言中无符号数和有符号数相加问题 看个题: #include<stdio.h> int main() { unsigned int a=6; int b=-20; printf("%d\n"
-
用C语言判断字符是否为空白字符或特殊字符的方法
C语言isspace()函数:判断字符是否为空白字符 头文件: #include <ctype.h> 定义函数: int isspace(int c); 函数说明:检查参数c是否为空格字符,也就是判断是否为空格(' ').定位字符(' \t ').CR(' \r ').换行(' \n ').垂直定位字符(' \v ')或翻页(' \f ')的情况. 返回值:若参数c 为空白字符,则返回非 0,否则返回 0. 附加说明:此为宏定义,非真正函数. 范例:将字符串str[]中内含的空格字符找出,并显
-
C语言中的字符(char)详细讲解
1.字符型(char)简介 字符型(char)用于储存字符(character),如英文字母或标点. 严格来说,char 其实也是整数类型(integer type),因为 char 类型储存的实际上是整数,而不是字符. 计算机使用特定的整数编码来表示特定的字符. 2. 声明字符型变量 3. 字符常量与初始化 实例: 用 char 类型来专门表示一个字符,例如: char a='1'; char b='$'; char c='X'; char d=' '; // 空格也是一个字符 char e=
-
C语言特殊符号的补充理解
续接符 反斜杠"",他有两种最常见的功能,一就是续航功能,二就是我们提到反斜杠就会很敏感的转义字符. if("1==a&&2==b&&3==c) { printf("hello\n"); } 有以上的代码我们可以等价于 if("1==a&&\ 2==b&&\ 3==c) { printf("hello\n"); } 这里反斜线就起到了一个连接上下两行的代码,在咱看
-
C语言利用面试真题理解指针的使用
目录 前言 笔试题一 笔试题二 笔试题三 笔试题四 笔试题五 笔试题六 笔试题七 笔试题八 前言 大家好~我又来了,今天给大家带来的是指针的几道笔试题,希望能够加强大家对指针知识的把握,指针就应该这样学! 笔试题一 #include<stdio.h> int main() { int a[5] = { 1 , 2 , 3 , 4 , 5 }; int* ptr = (int*) (&a + 1); printf("%d, %d", *(a + 1), *(ptr -
-
C语言各种符号的使用介绍下篇
目录 1.按位运算符 1.1 按位或( | )和按位与( & ) 1.2 按位异或( ^ ) 1.3 一个关于整型提升的问题 2.移位操作符 2.1 左移<< 右移>>操作符 2.2 习题练习 3.++和--的操作 3.1 基本操作 3.2 从汇编角度深入理解a++ 1.按位运算符 1.1 按位或( | )和按位与( & ) 上期我们讲到过逻辑或和逻辑与,他们得到的结果是真假值,但我们一定要区分清楚,按位运算符 "|" 和 "&
-
C语言各种符号的使用介绍上篇
目录 1.注释符号 1.1 注释的基本注意事项 1.2 如何写出好的注释 2.接续符和转移符 2.1 续行功能 2.2 转义字符 3.单引号和双引号 3.1 基本概念 3.2 特殊情况 4.逻辑操作符 4.1 && (逻辑与) 4.2 || (逻辑或) 4.3 逻辑与和逻辑或的笔试题 1.注释符号 1.1 注释的基本注意事项 为了更好的演示我们下面的代码会在 Linux 平台下演示( \ 为续行符): 这段代码,哪一行是有问题的呢? 这里可能有小伙伴就有疑问了,为什么只有这一行出了问题呢?
-
C语言编程计算信噪比SNR理解学习
目录 概念 计算方法 相关认知 Taprint中的信噪比 实例 概念 这里面的信号指的是来自设备外部需要通过这台设备进行处理的电子信号,噪声是指经过该设备后产生的原信号中并不存在的无规则的额外信号(或信息),并且该种信号并不随原信号的变化而变化. 计算方法 信噪比的计量单位是dB,其计算方法是10lg(Ps/Pn),其中Ps和Pn分别代表信号与噪声的有效功率,也可以换算成电压幅值的比率关系:20Lg(Vs/Vn),Vs和Vn分别代表信号和噪声电压的"有效值". 在音频放大器中,我们希望
-
R语言编程数学分析重读微积分理解极限算法
目录 1 状态变化 2 极限语言 3 序列与函数 4 极限常数 圆周率 π 自然对数e 5 洛必达法则 1 状态变化 若将数学整体划分为三类,则可概括为代数.几何与分析.对于前两者,我们很早就建立了直观的概念,对于空间结构及其性质的研究,即为几何:以数为核心的研究领域,即为代数. 而分析则具备更多的非数学的内涵,所以初学者往往难以看透数学分析所指向的数学本质,如果望文生义,会更倾向于将"分析"理解为一门数学技巧,而非数学领域. 我们最先接触数学分析时,是将其等同为微积分的.可以认为微积
-
GO语言临界资源安全问题的深入理解
目录 一.临界资源 二.临界资源安全问题 三.临界资源安全问题的解决 四.写在最后 一.临界资源 临界资源: 指并发环境中多个进程/线程/协程共享的资源. 但是在并发编程中对临界资源的处理不当, 往往会导致数据不一致的问题. 示例代码: package main import ( "fmt" "time" ) func main() { a := 1 go func() { a = 2 fmt.Println("子goroutine.."
-
基于R语言赋值符号的区别说明
R语言赋值可以用=或<-,一般都建议使用<-,那你知道这两个之间的区间吗?那你有没有见过'<-'和'='这种赋值方法吗?今天就来和大家聊聊这基本的赋值符号都有哪些区别. 首先我们来看看符号的优先级,和java,c这些编程语言的优先级类似.下面这些都取自R帮助文档,输入?Syntax即可查看,它是根据优先级从高到低排列的. :: ::: access variables in a namespace $ @ component / slot extraction [ [[ indexing
-
C语言 自定义类型全面系统理解
目录 一.结构体 1.结构体的声明 局部结构体变量 全局结构体变量 2.特殊声明 3.结构体的自引用 4.结构体变量的初始化 5.结构体内存对齐 6.修改默认对齐数 7.结构体传参 传址调用原因: 二.位段 举例: 分析: 跨平台问题: 三.枚举 枚举类型的定义: 枚举的优点 四.联合 1.联合类型的定义 2.联合的特点 使用案例: 分析: 3.联合大小的计算 举例: 分析: 一.结构体 结构体是不同类型变量的集合体 1.结构体的声明 struct Book { char name[20
-
基于C语言sprintf函数的深入理解
printf 可能是许多程序员在开始学习C语言时接触到的 第二个函数(我猜第一个是main),说起来,自然是老朋友了,可是,你对这个老朋友了解多吗?你对它的那个孪生兄弟sprintf了解多吗?在将各种类 型的数据构造成字符串时,sprintf的强大功能很少会让你失望.由于sprintf跟printf在用法上几乎一样,只是打印的目的地不同而已,前者打印到字符串中,后者则直接在命令行上输出.这也导致sprintf比printf有用得多.所以本文着重介绍sprintf,有时也穿插着用用 pritnf.
随机推荐
- C#微信分享代码
- Docker 限制容器的 Block IO使用
- Jmail组件发送邮件之绝对能用的函数
- 简单实现vue验证码60秒倒计时功能
- Python网络编程 Python套接字编程
- ASP.NET程序中常用代码汇总
- PHP使用get_headers函数判断远程文件是否存在的方法
- 分析PHP中单双引号的误区和双引号小隐患
- GridView中加上CheckBox 的全选功能的代码
- ajax实现的提交文章前进行敏感词审核的代码
- JSP中隐式对象用法实例
- 转-几个比较可爱的问答故事
- location.search在客户端获取Url参数的方法
- mysql中使用sphinx搜索子域名需注意的问题
- jQuery代码优化 遍历篇
- jQuery实现购物车计算价格功能的方法
- jquery带翻页动画的电子杂志代码分享
- jQuery设置指定网页元素宽度和高度的方法
- spring基础系列之JavaConfig配置详解
- js中用事实证明cssText性能高的问题