小小的总结
截至目前,我们已经写了一些简单的C语言程序,比如学习了常见的数据类型——整型、浮点型和它们根据数值大小而定的细分类型,数据类型让机器具备识别数据类型的能力,从而对数据进行各种运算,还有利用标准打印函数printf在控制台输出helloworld以及利用scanf函数输入从而“定制”输出,“运算”需要许多算术操作符——/、%、*、+、-等较为简单的操作,当要实现更为复杂的、个性化的定制输出时我们需要更多的工具,比如各种结构来组织程序,就像一篇文章最好有层次有结构可循,有顺序、倒叙、、插叙,深入到具体的文段就是有各种用来起承转合的逻辑连接词——“但是”“不仅......而且”等
对应到已经学习的内容那就是循环(for、while、do-while)、条件选择(if-else)、顺序结构。然而我们只是对已学内容进行一个大致的梳理,并不代表以后的学习中就不会再出现了。有点像是建房子,我们现在是在打地基的阶段,后面的内容是建立在这些之上的,所以一点一点来,但不要放弃,才会比较快。
正文
除了常见的整数及小数,生活中还有“文本信息”,比如我现在打下的汉字,以及其他国家的语言文字,这一些都属于“字符”或“字符串”,之前有提到,用单引号‘’
包裹的是字符,比如‘A’,而用“”
包裹的就是字符串。文本信息中当然也有可能存在数字,它是字符而不是整型或者浮点型数据,这是因为文本中的数字不起运算作用,而是作为文本信息的一部分。我们知道机器是懂二进制形式的数据的,所以文本信息必然也要被编码成二进制,也能从二进制反编译成文本信息,所以我们要引入一个国际上通用的ASCII字符编码系统,它是一张表,ASCII 码表 - cppreference.com。
0~31是不可见的控制字符比如回车、包括最末尾的127(删除操作);
32(空格,空格可见哦)~126就是可见符号。
48~57 表示0~9的数字;
32~48、58~64、91~96、123~126就是一些标点符号或者特殊字符比如!、/;
65~90就是26个大写的英文字母;
97~122是26个小写的26个英文字母。
字符用%c格式化输出,字符串用%s格式化输出,比如下面的例子:
#include<stdio.h>
int main()
{printf("%c\n",'A');//或者printf("%c\n",65);printf("%s\n", "hello world");//记住字符串用双引号!return 0;
}
为什么可以用printf("%c\n",65);来打印字符A?因为这里的十进制65在打印函数的格式化输出中定义成字符输出说明需要输出的是在字符编码中它所代表的字符,而printf("%c\n",‘65’)是不对的,违反了‘’
是用来包裹单字符的规则,因为本质上它是字符串,所以要用%s格式输出,并且改成“”,那就是下面这样:
#include<stdio.h>
int main()
{printf("%s\n", "65");printf("%s\n", "hello world");return 0;
}
但是以上程序是“死的”,除非我们自己主动去改引号里面的内容,所以为了像之前那样能够定制输入输出我们还需要学习“数组”,来存储多字符的情况。see you soon.