在c ++

时间:2018-01-02 07:51:17

标签: c++

我有2个字符。我想像这样添加它们:

  • 1 char:11000010
  • 2 char:00010000
  • 结果:00010000 11000010

我的结果应该是一个int。 (左侧的其他字节应为0)

我正在做的是:

int i = (c2 <<8) + c1;

但这给了我一个与预期完全不同的价值。 (当我用+替换|时)

有谁能告诉我这里做错了什么? 非常感谢!

2 个答案:

答案 0 :(得分:5)

char在您的平台上为signed

如果您对unsigned charc2的类型使用c1,则表达式中每个字词的隐式促销int将具有您所效果的效果。

答案 1 :(得分:4)

您可以使用乘法而不是移位:

int i = (int)c2 * 256 + c1;