首页 > 生活

C语言中的字符常量与变量

更新时间:2025-05-18 15:19:20 阅读: 评论:0

1. 字符常量

如果我想在屏幕上打印"HelloWorld"。应该怎样做呢?大家应该很熟悉这个代码了。

#include <stdio.h>int main(){printf("HelloWorld");return 0;}

我们使用printf函数,第一个参数是需要输出的字符串,而字符串是用双引号包括的。

不知道大家有没有考虑过,字符串是由什么组成的呢?

没错,就是我们这一节要讨论的——字符。

如果我单独用字符来打印HelloWorld,将代码按照如下方式修改:

#include <stdio.h>int main(){printf("H");printf("e");printf("l");printf("l");printf("o");printf("W");printf("o");printf("r");printf("l");printf("d");return 0;}

这样看上去,的确是在一个个地输出字符。但是,我们要注意,字符串是用双引号包括的。也就是说,这上面输出的仍然是字符串,只不过每一个字符串仅包含一个字符。

那我们怎样,用顾长卫车震单个字符的形式来输出呢?

定义:字符常量由单引号包括

类似于'a' , 'b' , 'c' , '1' , '2'。这样的都是字符常量。

'ab'这样的写法是错误的,字符常量只允许有一个慎独什么意思字符。如果需要多个字符,请使用字符串"ab半透明的墙"。

既然单引号包括的是字符,那我们这样打印行不行?

#include <stdio.h>int main(){printf('H');printf('e');printf('l');printf('l');printf('最孤独的图书馆o');printf('W');printf('o');printf('r');printf('l');printf('d');printf('\n');return 0;}

答案是不行的,这样会导致编译报错。因为,我们之前有提到过printf的第一个参数必须是字符串。

既然如此,我们考虑是否能用printf函数的占位符来给字符占位呢?

之前我们已经了解了,整数int类型占位符为%d,浮点double类型占位符为%f。

字符类型的占位符为 %c 。

#includ徐黛妮e 语言的艺术<stdio.h>int main(){ printf("%c%c%c%c%c%c%c%c%c%c%c", 'h', 'e', 'l', 'l', 'o', 'W', 'o', 'r', 'l', 'd', '\n'); return 0;}2. 探究字符类型占用空间

我们可以用sizeof来探究一下,字符类型在计算机内部所占用的空间大小。

#include <stdio.h>int main(){printf("sizeof a= %d\n", sizeof('a'));printf("sizeof b= %d\n", sizeof('b'));printf("sizeof c= %d\n", sizeof('c'));printf("sizeof d= %d\n", sizeof('d'));printf("sizeof e= %d\n", sizeof('e'));return 0;}

字符类型仅占用1个字节。

3. 错误导致的意外收获

在前面的代码中,我们使用%c作为字符类型的占位符。假如我们不小心用错了占位符,使用了整型占位符%d,会发生什么呢?

#include <stdio.h>int main(){ 徐咏 printf("%d %d社会学研究 %d %d %d", 'a', 'b', 'c', 'd', 'e'商务部研究院); return 0;}

观察结果,字符'a','b','c','d','e',使用整型占位符进行打印,结果居然为一些整型数值,并且数值居然是连续的。那我们有理由推测,字符和数值,存在某种联系。

4. 整数与字符的对应关系——ASCII

计算机是无法直接存储字符的,它只能用某个数值来代表某个字符。

而这个映射关系,被称作美国信息交换标准代码(American Standard Code for Information Interchang保湿面膜e)。我们一般将其简称为ASCII。

ASCII设计的时候,仅仅考虑了拉丁字符,0到127分别对应一个字符。而一个字节最多可以表示256个数,所以,字符类型仅需要一个字节就能正常存储。我们刚刚用sizeof计算出字符类型占用一个字节的大小也应验了这个设计。

那么如何使用ASCII表呢?

Dec是十进制的缩写,Oct是八进制的缩写,而Chr则为字符。

例如:字符A,对应的数值为十进制的65,八进制的101,十六进制的41。

5. 字符类型与字符变量

字符在计算机内部用整数表示,并且只需要用到0至127的整数范围。

既然这样,没必要为字符专门新设计一种类钻戒怎么选型,字符类型与只占用一个字节的整数类型完全一致。

为了表示这个类型既能用于整型,也能用于字符,这种类型被命名为char。

定义一个字符变量

char c1 = 'a';char c2 = '\n';char c3 = '1';

用字符占位符,打印这三个变量。输出结果为三个字符。

#include <stdio.h>int main(){ char c1 = 'a'; char c2 = '\n'; char c3 = '1'; printf("c1=%c c2=%c c3=%c&#上海城市规划34;, c1, c2, c3); return 0;}

用整型占位符,打印这三个变量。输出结果为这三个字符在ASCII中所对应的数值。

#include <stdio.h>int main(){ char c1 = 'a'; char c2 = '\n'; char c3 = '1'; printf("c1=%d c2=%d c3=%d", c1, c2, c3); return 0;}

让printf打印出字符本身还是字符所对应的数值,就看使用哪一种占位符。

6. 探究字符串常量占用空间

接下来,我们来探究一下字符串所占用的字节空间的大小。

#include <stdio.h>int main(){printf("sizeof HelloWorld = %d\n", sizeof("HelloWorld"));return 0;}

一个字符占用一个字节的大小。但是,字符串为什么会多占用一个字节呢?

原来在字符串结尾处,为了标记这个字符串已经结束了,会在字符串会多占用一个字节,并在这个字节里面填数值0,用于标识字符串结束。

7.字符零与数值零

既然零表示字符串结束,我们尝试在字符串里面故意添加零,强行让字符串结束。

#include <stdio.h>int main(){printf("Hello0World");return 0;}

零被当成字符正常输出了。其白苹果怎么办实,这也是可以遇见的一个p2p技术结果。如果零不能被正常输出,那我们连"100"这种字符串都无法正常打印。

让我们再仔细观察一下ASCII表中的字符零,它对应的数值其实是十进制的48。

我们需要的是数值零,而不是字符零。

8. 转义字符

那怎样表示数值零呢,我们再次尝试以下代码。

#include <stdio.h>int main(){printf("Hello\0World");return 0;}

HelloWorld字符串被我们强行截断了,printf函数只打印出了Hello就认为字符串已经结束了。

\数值被称作转义字符。

由于直接在字符串中写0会被认为是字符0,而\数值这种写法,可以让我们输入数值0。但是,这个数值不是用十进制来表示的,而是用八进制。

那我们尝试直接使用数值来打印字符串Hello,注意剩余价值理论哦,斜杠后面跟着的是八进制数值。

从上表中找到Hello所对应的八进制数值分别为110,145,154,154,157。

#include <stdio.h>int main(){printf("\110\145即热式电热水龙头\154\154\157");return 0;}

接下来,我们来介绍一个特殊的数值,十进制10,八进制12。看看这个数值打印出来是什么效果。

#include <std空调遥控器io.h>int main(){printf("Hello\12World");return 0;}

如你所见,它和\n的效果一致,没错它们是同一个东西。\12 就是我们之前一直在用的换行\n。而为什么换行会有两种写法呢?

由于记数值是比较麻烦的,为了方便使用一些常用到的数值可以用字母来替代。例如:

转义序列含义八进制十进制\a报警77\b退格108\f换页1412\n换行1210\r回车1513\t水平制表119\v垂直制表1311

有一些字符无法直接在键盘上输入,这一类字符被称为不可见字符。就像上面的表中列出的字符,这些字符可以用斜杠加数值来表示,也可以使用斜杠加助记字母来表示。

但是现实主义画家不是所有的不可见都有助记字母,所以你可能还是需要查表来获得这些字符所对应的数值。

ASCII表中,数值为十进制0到31所对应的字符为不可见字符。

点击以下链接获取更多课程:

01. 课程介绍

02卸妆水哪个好. VS开发环境的搭建

03. 第一个C语言程序

04. 基本的C语言语法知识

05. 整型数据类型

06. 浮点数据类型

07. 变量与常量

08. 字符常量及字符变量

09. printf函数详细解析

10. printf函数深入讨论

11. scanf函数

12.道德经解释 运算符与表达式

13. 类型转换

14. 关系运算符与逻辑运算符

15. 分支结构

16. 循环结构

17. 循环辅助

18. 多重选择

19. 初识数组

20. 多维数组

21. 字符串与字符数组

22. 输入输出缓存

23. 函数

24. 函数递归

25. 调试代码

26. 初识指针

27. 指针运算

28. 指针与数组

29. 指针作为参数传递

后续更多课程

本文发布于:2023-05-25 18:32:30,感谢您对本站的认可!

本文链接:http://www.ranqi119.com/ge/85/128477.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:常量   变量   字符   语言
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26|友情:优美诗词|电脑我帮您|扬州装修|369文学|学编程|软件玩家|水木编程|编程频道