【问题标题】:How do I initialize a single character variable to a decimal number (with an initializer)如何将单个字符变量初始化为十进制数(使用初始化程序)
【发布时间】:2018-11-28 06:35:28
【问题描述】:

这是一个关于 C 语法的问题。

我有这个一字节长的字符变量,我因此初始化:

const char timeband = "\xe";

这会将其初始化为十进制值 14。我使用的是十六进制,因为我不知道如何在初始化程序中指定十进制。我该怎么做?

不能使用赋值语句或八进制设置值。

编辑:我应该说

const char timeband[1] = "\xe";

我仍然想摆脱十六进制。使用 '\xe' 并不能回答问题。

【问题讨论】:

  • 您正尝试在此处将 字符串 分配给 char

标签: c syntax


【解决方案1】:

我猜你正在寻找const char timeband[1] = { 14 }; 没有必要花哨的十六进制表示法。

【讨论】:

  • 你应该在发布之前尝试编译它。您不能使用整数常量初始化数组。 (此评论指的是问题的原始版本,该版本已被编辑。)
  • @KeithThompson 最初的问题是关于标量,而不是数组。 OP更改了问题,我没有正确更新答案。
  • 不是正确答案。作者要求设置标量而不是数组。请编辑 编辑:我意识到 OP 改变了他的问题。忽略我的反对票,所以不允许我取消它。
【解决方案2】:

无法在字符串文字中指定十进制字符值。

你可以这样做

const char timeband[1] = { 14 };

对于长字符串,这种初始化会很快变得非常乏味:

const char foo[] = { '1', '2', '3', 14 };

但如果你想要十进制,这就是你所拥有的。

【讨论】:

  • 不是正确答案。作者要求设置标量而不是数组。请编辑 编辑:我意识到 OP 改变了他的问题。忽略我的反对票,所以不允许我取消它。
【解决方案3】:

对于单个字符,需要使用单引号:

const char timeband = '\xe';

【讨论】:

  • OP 不想要一个字符。
【解决方案4】:

我要回答我自己的问题:

你做不到。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-17
    • 2021-05-10
    • 2013-11-11
    • 2015-04-18
    • 2018-04-30
    • 1970-01-01
    相关资源
    最近更新 更多