4

我正在学习一本名为“在 Mac 上学习 C”的书。它将 char 数据类型定义为 1 字节数据类型。这是否意味着具有 char 数据类型的变量不能保存诸如 5000 之类的整数?我对此感到困惑。本书有一个示例程序,将变量数据类型分配为 char,变量中包含 5000。它实际上是一个字符串,5000 长。示例:(char rating[5000];)。我以为 char 只能保存 ascii 集或数值?对不起,我对编程很陌生。

4

4 回答 4

5

这是否意味着具有 char 数据类型的变量不能保存诸如 5000 之类的整数?

不会。在一个字节非常长的平台上,理论上是有可能char保存这个值的5000


但是,这与您阅读的示例无关。这个:

char rating[5000];

创建一个5000秒的数组。它没有使用 value进行初始化您是否将此与 C++ 的括号初始化语法混淆了?那将是charrating5000

char rating(5000);

它做了一些完全不同的事情。无论如何,它根本不是有效的 C。

于 2013-11-10T19:23:45.927 回答
3

char rating[5000]表示字符数组5000。也就是说,它将占用5000 * sizeof(char)内存中的一个空间。

于 2013-11-10T19:21:26.393 回答
2

char rating[5000]将创建一个包含 5000 个字符元素的数组。

于 2013-11-10T19:22:10.097 回答
-1

char 数据类型为 1 字节数据类型。这是否意味着具有 char 数据类型的变量不能容纳诸如 5000 之类的整数?

Char是指字符。如您所知,一个char变量拥有 1 个字节的空间。因此,它可以精确地保存 一个数字或一个字母——不多也不少。Charvalues 是一个字符的值。

这意味着——具有 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' 相反,它声明的大小rating5000


我认为 char 只能保存 ascii 集或数值。

是的,你对 ascii 部分是正确的。char 变量可以随时保存任何一个ascii 值。字母、数字和符号共同构成了 ascii 集。但是,数值不属于这一类。数值是幅度,不一定只有一位数字。数字(即从 0 到 9 的数字)是它的正确术语。


总而言之,char是一种可以存储字母/字母数字/数字值的数据类型。字符串一组char. “ a ”或“ 1 ”可以是char数据,但短语句子不能。要将一组字符存储到变量中,请使用字符串。记住这些简单的事实,让您的生活更轻松。

于 2015-07-06T10:00:16.930 回答