【问题标题】:Char Data type variablesChar 数据类型变量
【发布时间】:2013-11-22 12:34:51
【问题描述】:

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

【问题讨论】:

  • char rating[5000] 创建一个包含 5000 个字符元素的数组。
  • 如果那本书没有解释什么是数组,或者让您感到困惑以至于您认为该语句以某种方式将 5k 存储在 char 中,请拿起另一本书,那本书不适合您。跨度>
  • 单个 char 可以保存从 -127 到 +127 的整数值。 (无符号字符可以容纳 0 到 255。)Ascii 字符的范围是 0 到 127。
  • @CharlieBurns 不,这是 minimal 范围。标准中没有任何内容表明 char 不能更宽。
  • 我应该在评论前加上“一般......”

标签: c arrays variables char


【解决方案1】:

char rating[5000] 表示5000 字符数组。即会在内存中占用5000 * sizeof(char)的空间。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这是否意味着char数据类型的变量不能容纳5000这样的整数?

      没有。在一个字节非常长的平台上,理论上char 可以保持5000 的值。


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

      char rating[5000];
      

      创建一个包含 5000 个chars 的数组它没有用值5000 初始化rating 您是否将这与C++ 的括号初始化语法混淆了?那将是

      char rating(5000);
      

      它做了一些完全不同的事情。而且它根本就不是有效的 C。

      【讨论】:

      • +1 虽然您可能会提到 char rating(5000); 的含义,正如您所提到的那样!
      • @RahulTripathi 谢谢。我想我提到它是 C++ 风格的初始化。
      • 对不起,我错过了! :)
      • @RahulTripathi 没问题。
      • @hacks:- 计数移至 3 ;)
      【解决方案4】:

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

      字符指的是字符。如您所知,char 变量包含 1 个字节的空间。因此,它可以保存 exactly 一个 数字或 一个 字母——不多也不少。 Char 值是单字符值。

      这意味着——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];)。

      如果您不知道,stringchar(即字符)的数组。 char rating[5000]正在声明一个字符串数据类型。它将rating定义为5000个chars的字符串,即5000个字符长的字符串。 但是,它并没有将rating 初始化为值5000。 错误解释:char rating='5000' 而是将rating 的大小声明为5000


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

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


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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多