首页 > 其他分享 >C语言之旅0---(看了就有收获的优质系列博客)

C语言之旅0---(看了就有收获的优质系列博客)

时间:2024-08-12 10:53:07浏览次数:6  
标签:字符 之旅 int 打印 C语言 --- 关键字 arr2 ASCII

本章概览

1.关键字介绍

  • 关键字就是一些具有特殊意思的一些单词,比如:if,int,while 等。这个int,各位应该都熟悉吧!(对喽,前面咱们写过–int main()),在C语言中,有些单词被赋予特殊含义 和用法,以供程序员们去使用,也就有了今天所说的关键字是不是一点也不神 秘呀)。在C99之前,C语言中规定了32个关键字。如下所示:在这里插入图片描述
  • 关键字的注意事项:
    • 1.关键字是由C语言指定单词,是不能自己创建关键字的
    • 2.变量名不能与关键字重复
  • 注意一下下:
    • 在C99之后,新增了一些关键字inline,restrict, _Bool _, _Complex, _Imaginary等关键字。
    • 这些关键字不需要像背单词一样,不用去刻意背,后面我们都会讲到的,讲着讲着和你用着用着,自然而然就记住了。
  • 有关关键字的信息链接(感兴趣的朋友可以看一下哟)
    C语言关键字全部介绍:https://zh.cppreference.com/w/c/keyword

2.字符和ASCII编码

  • 字符
    • 字符这玩意太常见了,我们现在所用的中文字体,英文字体等,都是字符。在C语言中用''括起来东西,被称为字符。比如:'a','0','\n'等。
  • ASCII编码
    • As we all know,计算机只能识别二进制指令,所以数据都是以二进制形式进行存储的后面会讲到数据在内存中的存储方式,各位期待一下)。比如,10的二进制——000...1010。我们知道数值可以通过与二进制的关系转换成二进制(点击:进制转换的方法)进行储存。但字符 与二进制没有半毛钱的关系那怎么进行储存呢?,这个时候呢,美国国家标准学会(ANSI),就给每一个字符规定了一个二进制序列——编码。每个字符对应一个数值这个数值就是ASCII值。以十进制表示的值),如图所示:在这里插入图片描述
      更多信息请参考:点击直达:https://zh.cppreference.com/w/cpp/language/ascii
  • 这些ASCII值,我们不需要去记忆,用到的时候直接去查一下ASCII表就OK了。 不过,有几点我们还是要有所了解的(要记住的
    • 1.字符A ~ Z的ASCII码值从 65~ 90.
    • 2.字符a ~ z的ASCII码值从97~122.
    • 3.对应的大小写字符的ASCII码值的差值是32.
    • 4.数字字符0~ 9的ASCII码值从48~57.
    • 5.换行符\n的ASCII码值是:10.
    • 6.这些字符中ASCII码值从0~31这32个字符是不可打印字符,无法打印在屏幕上观察。
  • 可打印的字符代码展示
    下面展示一些 。
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 32; i < 127; i++)   //因为32之前的字符是不可打印字符
	{
		printf("%c ", i);
	}
	return 0;
}

运行的结果,如图:在这里插入图片描述

3.字符串和\0

  • 字符串:
    • 很好理解,就是由单个字符组成的,像糖葫芦一样给穿起来,用""括起来的东东就是字符串,比如"abcdef"
  • \0 :
    • 这个字符具有结束的作用,用于字符串的结束标志
    • 接下来看一组代码,以便我们进行'\0'的讲解。下面展示一下 。
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
int main()
{
	char arr1[] = "abcdef";        //打印字符串abcdef
	char arr2[] = { 'a','b','c','d','e','f' };
	printf("arr1=%s \n", arr1);  //%s是字符串占位符,后面咱们会讲解的
	printf("arr2=%s ", arr2);
	return 0;
}

运行结果,如图所示;在这里插入图片描述
如图所示,是打印字符串的两种不同形式。如代码所示,arr1正常打印abcdef,但arr2却打印一些abcdef烫烫……乱码。之所以会出现这两种情况,那是因为在arr1里面的字符串abcdef后面结尾处自动补个'\0',但在arr2里面却没有它,所以就出现了两种不同结果。上面我们讲过'\0'停止标志位(结束标识符)。所以,在打印arr1中的字符串的时候,是一个一个进行打印的‘,遇到'\0'就结束打印。恰恰相反,在arr2中,也会一个一个进行打印,但在打印abcdef的过程中,由于没有遇到'\0',所以就不会停下打印,至于后面打印什么就一无所知了(所以就出现了乱码),直达后面随机出现一个'\0',才会停止,所以就出现了上图所示那样 “烫烫……” 之后就停止了。

  • 修改后的代码如图所示;
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
int main()
{
	char arr1[] = "abcdef";
	char arr2[] = { 'a','b','c','d','e','f','\0'};//加了字符'\0'
	printf("arr1=%s \n", arr1);
	printf("arr2=%s ", arr2);
	return 0;
}

运行结果图:在这里插入图片描述
这回可以看出来,在arr2中加了字符'\0',后,就正常打印了。所以有和没有'\0',差别很大吧。,我们要记住,打印字符串的时候系统会自动在后面加'\0'字符,而其他就不行了,比如arr2.

4.转义字符

  • 转义字符,顾名思义就是转变了原有字符的意思。以加个\的形式就转意了原本字符的意思。C语言中的转义字符如下所示:
    常用型在这里插入图片描述
    不常用型在这里插入图片描述
    转义字符参考:https://zh.cppreference.com/w/c/language/escape
  • 挑几个进行简单的讲解(大家可以自己去试试)'\?'这个标识符的作用是防止信息被编译器解析成三字母词,(当然现在的新版的编译器已经没这个问题了),以前旧版本编译器有这个诟病。比如,我想输入printf("(are you ok??) "),在旧版本的编译器中,会把连续的?)转换成],即:??)------>],所以在老版本中为了解决这个问题,就加了个'\?',防止被解析成三字母词。
    • ‘\n’,相必大家在前面的代码中都见到过了吧,它就是换行符,就是为了美观,老是打印信息在一行也不好看,对吧。给大家看看有和没有'\n'的区别:在这里插入图片描述
      是不是都打印在一行很不美观,不便于观察信息。
    • '\ddd’的用法ddd表示1~3个八进制数字,可以认为它就是字符的八进制表示方法. 1位,2位,3位数字都OK,只要是八进制就OK, 比如。'\123'对应的十进制(ASCII码值)—83—对应的字符是'S',代码展示;
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
int main()
{
	printf("%c", '\123');
	return 0;
}

结果运行图:在这里插入图片描述

  • ’\xdd‘就是字符的十六进制表示方法,可以类比上面的\ddd别忘了dd表示 数字哟,在这里就不再详细概述了,直接上代码展示:
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
int main()
{
	printf("%c", '\x23');
	return 0;
}

运行结果:在这里插入图片描述
剩下的转义字符,请大家自行试试

5.看图放松一下呗!!!

请边听歌边看图片放松e下 https://y.qq.com/n/ryqq/player
在这里插入图片描述
人生不止眼前的苟且,还有诗和远方。感谢你能看到这里,点赞+关注+收藏是对我最大的鼓励,谢谢!!! 各位,我们下期见!

标签:字符,之旅,int,打印,C语言,---,关键字,arr2,ASCII
From: https://blog.csdn.net/2401_83009236/article/details/141103149

相关文章

  • Java自动化测试框架-08 - TestNG之并行性和超时篇 (详细教程)
    一、并行性和超时您可以指示TestNG以各种方式在单独的线程中运行测试。可以通过在suite标签中使用parallel属性来让测试方法运行在不同的线程中。这个属性可以带有如下这样的值:二、并行套件(suites)如果您正在运行多个套件文件(例如“ javaorg.testng.TestNGtestng1.xml......
  • 后端开发学习敏捷需求-->干系人分析与识别
    干系人分析与识别5W1H干系人分析与识别1.干系人是什么直接或者间接影响专题,以及被专题影响的人和组织,用户也是属于干系人,是产品直接或者间接的使用者又叫利益相关者,指积极参与专题或者在专题中其利益可能受积极或消极影响的个人或组织2.为什么要分析和识别干系人......
  • C语言
    sizeofonarrayfunctionparameterwillreturnsizeof'char*'insteadof'char[]'注意,在C语言中,当把一个数组指针作为参数传给函数后,他会降级成为一个单纯的指针,所以charmyChars[20]Sizeof(myChars)==20但是作为参数传递之后Sizeof(myChars)==sizeof(char*)=......
  • postman 安装使用教程---图文讲解
    一、安装postman1,安装包安装官网下载地址:https://www.getpostman.com选择好对应的版本下载,下载完后直接安装2,插件包安装可以在谷歌的应用商店里面找到,或者在网上下载。准备了一个配置完整的postman插件包http://download.csdn.net/detail/qazwsxpcm/9823420下载完成后打......
  • 地理编码之旅,一场地址与坐标的漫游
    随着移动设备的普及和定位服务的发展,在使用导航和位置搜索时,用户期望应用提供的位置是准确无误的,同时用户也希望App可以根据位置提供个性化和本地化服务,比如,在社交媒体上分享位置信息或帮助家庭设备智能联网管理等。想要获取准确的位置,经纬度是确定每个地点位置的精确坐标,但是,使用......
  • 简单的python web项目的docker-compose.yml 示例
    一个简单的pythonweb项目,包含redis,mysql,nginx,定时业务调度等其中web启动注册了自定义命令flaskcreate-db&&flaskinit-db&&uwsgi/web/uwsgi.iniversion:'3.5'services:db:image:mysqlcontainer_name:yeping_mysqlcommand:--default-......
  • SAP-网银付款及付款记账
    术语1、自动付款程序(AutoPayment):SAP标准程序(F110),可以生成付款建议并完成自动付款记账。2、付款建议(PaymentProposal):自动付款程序按供应商分析应付账款到期日,将到期的应付款明细列出,供会计人员参考。3、自动付款记账(AutopaymentPosting):根据付款建议,自动生成会计凭证,......
  • Elasticsearch 学习总结 - 相关配置补充说明
    Elasticsearch的基本概念term索引词,在elasticsearch中索引词(term)是一个能够被索引的精确值。foo,FooFoo几个单词是不相同的索引词。索引词(term)是可以通过term查询进行准确的搜索。text文本是一段普通的非结构化文字,通常,文本会被分析称一个个的索引词,存储在elasticsearch的索......
  • George Remus - the Great Gatsby
    modelon:ScottFitzgeraldmodelledthewealthyGatsbyonGeorgeRemus.FromOALD10  Remusissometimescreditedasthedirectinspirationfor TheGreatGatsby,[23] thoughGatsbymighthavebeenbasedononeofseveralfiguressuchas ArnoldRothstei......
  • 无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智
    无缝融入,即刻智能[一]:Dify-LLM大模型平台,零编码集成嵌入第三方系统,42K+星标见证专属智能方案1.Dify简介1.1功能情况Dify,一款引领未来的开源大语言模型(LLM)应用开发平台,革新性地融合了后端即服务(BackendasaService,BaaS)与LLMOps的精髓,为开发者铺设了一条从创意原型到高效生......