我正在学习一本名为“在 Mac 上学习 C”的书。它将 char 数据类型定义为 1 字节数据类型。这是否意味着具有 char 数据类型的变量不能保存诸如 5000 之类的整数?我对此感到困惑。本书有一个示例程序,将变量数据类型分配为 char,变量中包含 5000。它实际上是一个字符串,5000 长。示例:(char rating[5000];)。我以为 char 只能保存 ascii 集或数值?对不起,我对编程很陌生。
4 回答
这是否意味着具有 char 数据类型的变量不能保存诸如 5000 之类的整数?
不会。在一个字节非常长的平台上,理论上是有可能char
保存这个值的5000
。
但是,这与您阅读的示例无关。这个:
char rating[5000];
创建一个5000秒的数组。它没有使用 value进行初始化。您是否将此与 C++ 的括号初始化语法混淆了?那将是char
rating
5000
char rating(5000);
它做了一些完全不同的事情。无论如何,它根本不是有效的 C。
char rating[5000]
表示字符数组5000
。也就是说,它将占用5000 * sizeof(char)
内存中的一个空间。
char rating[5000]
将创建一个包含 5000 个字符元素的数组。
char 数据类型为 1 字节数据类型。这是否意味着具有 char 数据类型的变量不能容纳诸如 5000 之类的整数?
Char是指字符。如您所知,一个char
变量拥有 1 个字节的空间。因此,它可以精确地保存 一个数字或一个字母——不多也不少。Char
values 是一个字符的值。
这意味着——具有 char 数据类型的变量不能容纳诸如 5000 之类的整数。计算机内存中没有足够的空间供它使用。如果您输入的值包含多个字符(例如5000
),则仅接受第一个字符。您不能将此类数据提供给char
变量。
使用这个程序来更好地理解。
#include <stdio.h>
main()
{
char s;
scanf("%c", &s);
printf("%c", s);
return (0);
}
尝试输入 5000 并观察程序输出的内容。
将变量数据类型分配为 的示例程序,变量中
char
包含 5000。它实际上是一个字符串,5000 长。示例:(char rating[5000];)。
如果您不知道,字符串char
是(即字符)的数组。char rating[5000]
正在声明一个字符串数据类型。它定义rating
为5000s的字符串char
,即5000个字符长的字符串。但是,它没有rating
使用值 5000 进行初始化。错误解释:char rating='5000'
相反,它声明的大小rating
为5000
。
我认为 char 只能保存 ascii 集或数值。
是的,你对 ascii 部分是正确的。char 变量可以随时保存任何一个ascii 值。字母、数字和符号共同构成了 ascii 集。但是,数值不属于这一类。数值是幅度,不一定只有一位数字。数字(即从 0 到 9 的数字)是它的正确术语。
总而言之,char
是一种可以存储字母/字母或数字/数字值的数据类型。字符串是一组char
. “ a ”或“ 1 ”可以是char
数据,但短语或句子不能。要将一组字符存储到变量中,请使用字符串。记住这些简单的事实,让您的生活更轻松。