【问题标题】:How to assign an integer to a variable of type char如何将整数分配给 char 类型的变量
【发布时间】:2018-08-13 15:21:23
【问题描述】:

我没有在这里做任何事情。

这是我的代码:

#include<iostream>

using namespace std;

int main()
{
  char a='2Z';
  cout<<a<<endl;
  return 0;
}

但只有Z 被打印,而不是2 继续它。如何也打印整数?

【问题讨论】:

  • char 只能包含一个字符。你想要一个 std::string。
  • char 只能容纳 1 个字符。如果您想要多个字符,请使用std::string。另请注意,'x' 用于文字字符,"xx" 用于文字字符串。
  • 这个问题可能是相关的,并且在这里绝对提供信息:stackoverflow.com/questions/7459939/…
  • 不太清楚你在问什么。您是否要存储多个字符的字符串?您是否尝试存储单个多字节字符?您是否尝试将实际的 int 值存储到单字节 char 类型中?

标签: c++


【解决方案1】:

可能想要std::string a = "2Z";。注意双引号字符,以及类型的变化。

'2Z' 是一个多字符常量,具有实现定义的值,但类型为int

很可能是256 * '2' + 'Z'。这可能太大而无法放入char,如果char 在您的平台上是signed,那么再次缩小转换将由实现定义。您只得到Z,因为您的实现似乎正在计算(256 * '2' + 'Z') % 256,即'Z'

换句话说,最好避免使用多字符常量,将转换范围缩小到char 类型也是如此。

【讨论】:

  • 我见过 (clear|evil) 使用多字符常量,当每个常量都是 4 个字符并且它们的值具有语义含义时,读作 4 个字符(缩写)的英文单词。穷人的自我反省枚举。
  • @SergeyA:我也是。在一些内核代码中也是如此。我最喜欢的答案是:stackoverflow.com/questions/45550674/…
  • 你最喜欢的答案是你自己写的?我认为自己是一个自恋者! :)))
  • @SergeyA:哈。平心而论,我的意思是我给出的最喜欢的答案。但是,让我们留下我的其他评论;时不时有点自大并没有错;-)
【解决方案2】:

你有两个问题,首先你有单引号,其次你想在一个字符中保留一个字符串,解决方案:

#include<iostream>
using namespace std;
int main()
{
 const char *a="2Z";
 char str[] = "234";
 std::string aString = "4444ZZZZZ"; // Using STD namespace

 cout<<a<<endl;
 cout<<str<<endl;
 cout<<aString<<endl;

return 0;
}

【讨论】:

  • 谁在投票,请善待并解释原因。
  • @Simon NMDV,但std::string 不是首选吗?
  • 视情况而定,但问题中没有提到这个。
猜你喜欢
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-02-19
  • 1970-01-01
  • 2019-05-04
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多