【问题标题】:Explicit conversion C [duplicate]显式转换 C [重复]
【发布时间】:2013-04-04 01:06:41
【问题描述】:

如果我有以下情况:

char id[5]="1";

并且我想将 id 用作整数,我必须先转换它,否则 (int)id 足以使用该字符串中的值?

【问题讨论】:

  • 这个问题应该会有所帮助。 stackoverflow.com/questions/3420629/…
  • 特别注意(int)id 将编译并且是有效的C,但不会做你认为它会做的事情。它将返回字符串的(第一个)内存地址,即指针本身的值。

标签: c type-conversion


【解决方案1】:

不...您需要使用诸如int n = atoi( id ) 之类的函数调用来转换它

一个 char 数组就是...一个 char 数组...它不是您所想的意义上的数字。您需要使用函数调用将其从值的字符串表示形式转换为您要查找的实际数字整数值。

【讨论】:

  • 嗯,从技术上讲,它是一个数字,一个 ASCII 字符代码,但它不映射到数字。
  • 很公平——经过编辑澄清
【解决方案2】:

您可以使用atoi将字符串转换为整数:

char id[5] = "1";
int n = atoi(id); // n = 1

【讨论】:

    【解决方案3】:

    C 不提供字符串和数值数据之间的类型转换。

    要将字符串转换为 int,您需要使用atoi 或(更好)strtolstrtol 更好,因为如果输入字符串不能转换为数字,它不会导致未定义的行为,并且它允许您检测像 "42xyz" 这样的情况并做出正确的反应。

    【讨论】:

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