【问题标题】:How to define a char constant number in C and C++? [duplicate]如何在 C 和 C++ 中定义 char 常量? [复制]
【发布时间】:2019-08-24 17:02:25
【问题描述】:

我可以借助后缀LUD 等在 C 和 C++ 中定义文字数字,如下所示:

34656345L
94375804U
3.141593F
...

所以在它们出现的表达式中编译器知道它们的类型。定义像 char 这样的 1 字节文字数字的方法是否类似?例如,我知道我可以使用(char)28,但可能有一个我没有找到的后缀。

我查看了这个页面http://www.cplusplus.com/doc/tutorial/constants/,但没有提到任何字符常量。

【问题讨论】:

标签: c++


【解决方案1】:

字符文字没有后缀。

在 C++ 中,您可以使用 ' 封闭的文字,如 '\x9f'(在 C 中它们是 ints),但无法以这种方式指定十进制字符代码。

【讨论】:

  • 谢谢。是否有完整的来源,这样我就可以掠夺并阅读有关后缀的更多信息?
  • @Fomalhaut 检查en.cppreference.com (我认为不同类型的整数有几个单独的页面:整数,实数,...)。它是最好的 C++ 资源之一。
【解决方案2】:

在 C++ 中,char{28} 可以满足您的需求。 is no suffix 代表 char(也不是 unsigned char)字面量。

正如@JesperJuhl 提醒我们的那样,如果您愿意,您可以create your own suffix 获取字符文字,就像这样:

constexpr char operator "" _c(int i) { return char{i}; }

然后您可以编写123_c,其类型为char。但是 - 我不会推荐它,它可能会让人们感到困惑。


PS:您可以使用诸如 'a''b' 之类的字符文字(如果您的编译器使用与 ASCII 兼容的字符集,例如 UTF-8 或 Latin-1,则它们的值分别为 97 和 98)。这些将具有char 类型,而不是int 类型。见讨论here

【讨论】:

  • 你总是可以使用make your own 后缀——如果你愿意的话;)
猜你喜欢
  • 2011-11-26
  • 2010-12-03
  • 1970-01-01
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 2021-08-30
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多