C语言字符常量与字符变量..

1.字符常量

诸如’a’、‘b’、'c’这类的都归属于字符常量
而且我们都知道printf()函数接收的第一个参数是字符串 所以不能够直接将字符常量作为printf函数的第一个参数
并且字符常量对应的占位符为%c

以下是对字符常量的演示

int main(){printf("%c%c%c%c", 'a', 'b', 'c', '\n');return 0;
}

2.字符类型占用的字节大小

1.字符常量占用的字节大小

在C语言中 对字符常量使用sizeof 那么字符类型会自动提升为int类型 那么检测的就是int类型的字节大小

int main(){printf("%zu\n", sizeof('a'));// 4return 0;
}

但是在C++中 打印的结果是1 也就是能够正确打印出char类型所占用的字节大小
本质上就是如果采用了C++编译器的话(visual studio文件的后缀名为cpp) 那么就可以正确获取结果
如果采用的是C编译器的话(visual studio文件的后缀名为c) 那么打印的就是int类型所占用的字节大小

2.字符变量占用的字节大小

那么如果检测的对象变成了字符变量的话 那么就可以正确获取字符类型占用的字节大小

int main(){char ch = 'a';printf("%zu\n", sizeof(ch));// 1return 0;
}

3.整数与字符的对应关系–ASCII

如果我们将前面打印字符的占位符换成%d的话 那么结果会是什么呢

int main(){printf("%d %d %d\n", 'a', 'b', 'c');// 97 98 99return 0;
}

可以发现 结果是一堆整数
其实这些整数就是ASCII码表中所打印字符对应的十进制数值 也是储存在计算机中的字节

打印的结果是字符还是ASCII码表中字符对应的数值 取决于占位符是%d还是%c

4.字符串常量

诸如"HelloWorld"之类的称之为字符串常量

int main(){printf("%zu\n", sizeof("HelloWorld"));// 11return 0;
}

可以看到 打印的结果是为11 比HelloWorld这个字符串常量的长度多1 那么多出来的1如何解释呢
原来在C语言中 字符串结尾会有一个数值0以标志字符串的结束

1.字符0和数值0

在这边特意讲一下的目的是为了区分他们两个 字符0对应的数值是48 和数值0的差别还是很大的

int main(){printf("%d %d\n", 0, '0');// 0 48return 0;
}

5.转义字符

int main(){printf("Hello\0World");return 0;
}

结果只打印了Hello 因为他认为这个字符串到\0就结束了 事实也是如此 我们前面说过了字符串是以数值0作为结尾的 那么’\0’和0肯定是由什么联系的

诸如’\数值’之类称为转义字符 该数值为八进制形式
那么前面所讲的’\0’其实就是一个转义字符 他在ASCII码表中对应的就是数值0 两者是等价的关系

既然我们已经知道转义字符的格式是’\八进制数值’ 那么我们可以尝试一下通过转义字符打印"Hello"这个字符串

int main(){printf("\110\145\154\154\157\n");// Helloreturn 0;
}

可以看出 Hello被我们正确打印出来了

但是我们平常见到过换行符是以’\n’的形式存在的 这又是为什么?
其实就是因为数值格式存在的转义字符比较难以记忆 所以就通过一些字母进行替代 方便记忆

int main(){printf("\12\n");// 打印了两个换行return 0;
}

可以看到\12和\n的效果是一样的 都展示了换行的效果

以下是一些常见的字母格式的转义字符
在这里插入图片描述
在这里插入图片描述
有一些字符无法在键盘上体现 这被称为不可见字符 在ASCII码表中体现为前32个字符(数值0-31)
在这些不可见字符中 不是全部都有字母格式的转义字符 有些需要查表获取八进制数值以表示转义字符

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/464802.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开源】基于JAVA+Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

Peter算法小课堂—背包问题

我们已经学过好久好久的动态规划了,动态规划_Peter Pan was right的博客-CSDN博客 那么,我用一张图片来概括一下背包问题。 大家有可能比较疑惑,优化决策怎么优化呢?答案是,滚动数组,一个神秘而简单的东西…

二叉树和堆(优先队列)

前言: 本章会讲解二叉树及其一些相关练习题,和堆是什么。 二叉树: 二叉树的一些概念: 一棵二叉树是有限节点的集合,该集合可能为空。二叉树的特点是每一个节点最多有两个子树,即二叉树不存在度大于2的节点…

Spring Native 解放 JVM

一、Spring Native 是什么 Spring Native可以通过GraalVM将Spring应用程序编译成原生镜像,提供了一种新的方式来部署Spring应用。与Java虚拟机相比,原生镜像可以在许多场景下降低工作负载,包括微服务,函数式服务,非常…

Game辅助推广购卡系统全新一键安装版-已激活

(购买本专栏可免费下载栏目内所有资源不受限制,持续发布中,需要注意的是,本专栏为批量下载专用,并无法保证某款源码或者插件绝对可用,介意不要购买) 资源简介 运行环境 PHP5.6~7.0+MYSQL5.6 本程序可配合(伯乐发卡)基础版使用; 界面炫酷大气!程序内核为yunucm…

离线环境怎么下载python依赖包

公司内网环境无网络,运行自动化脚本需要安装python模块 1、脚本依赖包及其版本获取,记录在requirements.txt中 pipreqs ./script --encodingutf8 requirements.txt注意,这里是将./script 里的python模块自动扫描并写入到requirements.txt中…

【快速解决】抖音点赞快速删除代码||抖音点赞视频太多怎么删除?

目录 第一步 第二步 第三步 ​编辑 第四步 第五步 结语 第一步 在电脑上登录你自己的抖音账号,扫码登录你自己的抖音账号。 登录成功后是这个样子的。 第二步 点击自己主页面中的喜欢选项,如下图所示。 第三步 点击F12打开开发者界面 我的是谷歌…

JavaScript脚本:async,defer

🧑‍🎓 个人主页:《爱蹦跶的大A阿》 🔥当前正在更新专栏:《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 JavaScript 脚本 是 web 开发中的重要组成部分,用于为网…

基于centos的Linux中如何安装python

前言 之前在linux上安装python的时候没来及记录下来,感觉还是有必要的,所以现在打算把原来装好的python卸载掉,然后重装一遍,重新记录一下。当前环境是否安装python 通过查询我发现机器里有3个版本的python,第一个是…

Windows Server 2019 搭建并加入域

系列文章目录 目录 系列文章目录 文章目录 前言 一、域是什么? 二、配置服务器 1.实验环境搭建 1)实验服务器配置和客户端 2)实验环境 2.服务器配置 账户是域服务器的账户和密码 文章目录 Windows Server 2003 Web服务器搭建Windows Server 2003 FTP服务器搭…

一、西瓜书——绪论

第一章 绪论 1.独立同分布 通常 假设 样本空间 中 全 体样 本 服 从 一 个 未 知 “ 分 布 ” ( d i s t r i b u t i o n ) D , 我们获得的每个样本都是独立地从这个分布上采样获得的, 即 “ 独 立同 分布 ” ( i n d e p e n d e n t a n d i d e n t ic a …

机器学习系列——(十五)随机森林回归

引言 在机器学习的众多算法中,随机森林以其出色的准确率、对高维数据的处理能力以及对训练数据集的异常值的鲁棒性而广受欢迎。它是一种集成学习方法,通过构建多个决策树来进行预测和分类。本文将重点介绍随机森林在回归问题中的应用,即随机…