数据类型【二】

整理4。

d456ddb960034869b18f080cefff319c.png

2.4字符型

用法:字符型变量用于显示单个字符。

2.4.1.声明char类型变量

char类型变量的声明方式与其他类型变量声明方式相同。如:

char ch ;

char itable;

char age;等等

以上三个char类型的变量:ch,itable,age .

2.4.2.字符常量和书写规则

如果要把一个字符常量初始化为字母a,不必背下ASCII码,利用计算机语言可以将初始化为字母a赋予给ch:char ch = 'a';

在C语言中,用单引号括起来的单个字符称为字符常量。编译器一发现“a”,就将其转换成相应的代码值。所以,单引号必不可少。如下举例:

char ch ;/*声明一个char类型的变量*/

ch = 'a';/*为其赋值,正确*/

ch = a;/*错误!这里的a是一个变量*/

ch = “a”/*错误!这里的a是一个字符串*/

2.4.3.打印字符

printf()函数用%c指明待打印的字符,一个字符变量实际上被储存为1字节的整数值。因此,如果用%d转换说明打印char类型变量的值,打印的是一个整数。而%c转换说明告诉printf()打印该整数值对应的字符。如下:

18006d61cad747ffb8ee108fa8ba1a73.png

7e51e1b555ce48abbbf7905b1191f16e.png

2.4.4.对应的ASCII码值查看

像“a”字母ASCII码所对应的“97”虽然是int类型,但是它在char类型能表示的范围,又由于用%d转换说明打印char类型变量的值,即可输出打印出“a”所代表的ASCII码。

e2ba45266f194ea78df2d5cbe6518781.png7acb390f752140a48f5c1435334a221d.png

2.5转义字符

作用:用于表示一些不能显示出来的ASCII字符

像之前用到的\n就是其中之一。

转义序列   含义                                       
\a警报(ANSIC)

\b

退格
\f换页
\n换行
\r回车
\t水平制表符
\v垂直制表符
\\反斜杠
\'单引号
\"双引号
\?问号
\0oo八进制值
\xhh十六进制值

2.6布尔类型bool

作用:布尔数据类型表示真假。

bool类型只有两个值:

  1. true--真(本质是1)
  2. false--假(本质是0)

bool类型占1字节大小

示例:

a970e40fffe346fdadca66c39d078297.png

44ac44fa9ce949af9d6368f5763c18db.png

2.7字符串类型

简介:字符串是一个或多个字符的序列,如:

“Come and learn strings with Alika-snowr today!”

双引号不是字符串的一部分。双引号仅仅告诉编译器它括起来的是字符串,正如单引号括起来的表示字符一样。

作用:用于表示一串字符。

2.7.1.char类型数组和null字符

C语言中并没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中。数组由连续的储存单位组成,字符串中的字符被储存在相邻的储存单位中,每一个单位储存一个字符。

(在JavaScript的学习中,就提到数组的学习。)

第一天所学习的printf函数中,确实可以打印出像名字一样的字符串,但是如果想重复利用这个,就需要多次打印相同的字符串,为了简化,我们则需要用到char类型。

那么,什么是数组?

可以把数组看作是一行连续的多个存储单元。如果要存储5个单元(元素)可以写作为:char name[5];

字符串看上去比较复杂!必须先创建一个数组,把字符串中的字符逐个放入数组,还要记得在末尾加上一个\0,不过计算机可以自行处理这一细节。

2.7.2.strlen()函数

昨天提到sizeof运算符,它以字节为单位给出对象的大小,而strlen()函数给出字符串中的字符长度。在使用程序利用strlen()函数时要在开头添加一个头文件--#include<string.h>该头文件包含多个与字符串相关的函数原型,包括strlen()。

如果没有加上#include<string.h>则会出现以下情况:

26cc3a70ecaf466db8498fe1ea780fd5.png

1e66f739d9824b7095974587232f14e4.png

正确情况下则是:

a14483dd4c37402d9fca0ced87f91932.png

928ad526690849bc965e40ed16836d3f.png

以上看出strlen()函数打印出来的“abc”字符长度显示为3,并不包括\0。因为\0是作为字符串结束的标准而存在,所以求长度的时候并不算在里面。

2.7.3.使用字符串

scanf()函数能让用户可以与程序交流,scanf()是输入函数,是最多才多艺的函数。

结合sizeof()和strlen()函数看区别:

5e8b6953e9684f048a57f5f61124f19f.png

0536d0defdb24c00b0dcba331aec3076.png

分析:

1.sizeof运算符报告name数组有40个储存单位,但是只有前5个单位用来储存Alika,所以strlen()得出的结果是5。Name数组的第6个单元存储空字符,strlen()并未将其记入。

2.对于PRAISE用strlen()得出的也是字符串中的字符数(包括空格和标点符号)。然而sizeof给运算符给出的数更大,是因为把字符串末尾不可见的空字符也计算在内。

3.之前提到sizeof运算符的返回类型添加了%d转化说明这对strlen()同样适用。

4.昨天提到的sizeof运算符中有用圆括号,但是这里没有用。何时使用圆括号取决于运算对象是类型还是特定量。运算对象是类型时,圆括号必不可少,但对于特定量圆括号可有可无。

2.8常量和C预处理器

有时,在程序中是要使用到常量的。例如计算圆的周长:C=3.14159×d。

这里的常量3.14159代表的是著名的常量π。在该例中输入实际值便可以使用这个常量。然而这种情况使用符号常量会更好,也就是说使用下面的语句会更加准确,计算机会用实际值完成替换:C=π×d

为什么使用符号常量会更好呢?

如果阅读一个很长的程序,用符号常量代替常量语句所表达的含义将更加清楚。再者,程序中多处使用一个常量,如果这个只需要改变,从程序中一一找到它再改动太过复杂。如果程序使用符号常量,这只需要改变符号常量的定义,不需要再从程序中查找常亮的地方一一改正。

为了解决这个问题的做法如下:

1.先声明一个变量,然后将该变量设置为所需的常量。

49d19801aa8240e9a814d709a6950171.png

2.C预处理器,预处理器也可以用来定义常量,只需要在程序顶端添加一行#define。

5e8b6953e9684f048a57f5f61124f19f.png

格式是:#define   符号常量名  符号常量的值(其中没有等于号)

其中符号常量名最好全部用大写,因为用大写表示符号常量是c语言的一贯传统。只要在程序中看到全大写的名称,就会立刻知道这是一个符号常量。

2.8.1.const限定符

作用:用于限定一个变量为只读。

6e39f907dc8b49b895e4aadd8990e4a5.png

5be568b50fc947588d0e55ea1a530ffd.png

其意思为:AGE在程序中不可更改,只为18.

2.9printf()函数和scanf()函数

2.9.1.printf()函数

printf()函数打印数据的指令要与数据的类型相匹配,例如之前所遇到的%d,%e,%f等还有%s表示字符串,百分号的打印是%%

2.9.2.scanf()函数

scanf()函数是输入函数的一种,是最通用的一个。因为它可以读取不同格式的数据。

规则:

  • 如果要使用scanf()函数读取基本变量类型的值,在变量之前要加上一个&
  • 如果用scanf()函数把字符串读入字符数组中不要使用&

示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值