2016 - 2024

感恩一路有你

c语言scanf输入数组 C语言中为什么将数组(数组内都是数字)以字符串格式输出会打印出中文?

浏览量:2417 时间:2021-03-10 20:55:35 作者:admin

C语言中为什么将数组(数组内都是数字)以字符串格式输出会打印出中文?

这个问题涉及字符编码和数组存储机制。让我们用一个例子来解释。首先,让我们看看下面的简单程序及其运行结果,如下图所示:

首先,我们定义了两个数组STR1和STR2,一个用汉字初始化,另一个用字节数方式初始化,如第11行所示。表面上看,这两个阵列是完全不同的。让我们以不同的方式输出它们的内容。首先,分别在第13行和第14行以字符串的形式输出它们的内容。右边的程序执行结果显示,它们输出的内容相同——欢迎来到西安。此外,我们还定义了一个数组Arr1并通过数字为其赋值。代码是12行。在15行中,我们将Arr1转换为字符串并输出其内容。我们也得到了同样的结果。接下来,我们以数字方式输出STR1、STR2和pstr3的内容。见本准则第17-28行。在右边的输出结果中,我们可以看到相同的内容以三种方式输出。

从上面的程序可以看出,虽然数组以不同的方式初始化和分配,但是使用相同的输出方法将获得相同的输出结果。可见它们的实质是一样的。

为什么会这样?它涉及到字符的存储。我们知道,计算机内部的数据是由0和1组成的二进制数。为了表示字符,我们需要对它们进行编码。因为计算机技术最初是从美国发展起来的,原来的ASCII编码只包括英文字母、数字和控制字符,总共256个字符。后来,随着计算机的发展,应用越来越广泛,其他国家为了使计算机能够处理自己的语言,他们发明了很多其他的编码方法,各种编码方法之间存在着严重的兼容性问题,所以为了统一,后来人们提出了Unicode编码。在这种编码模式下,每个汉字存储在两个字节中。如果输出为字符串,将显示字符的内容。如果输出为数字,则显示其编码。

目前,大多数现代编译器开始使用Unicode编码字符串。例如,当我使用vs2017时,数组内容是数字,但可以输出中文字符。如果用一些旧的编译器替换相同的代码,可能无法输出汉字,但会输出一些乱七八糟的代码。

c语言scanf输入数组 c语言定义数组的格式 c语言scanf输入格式

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。