为了账号安全,请及时绑定邮箱和手机立即绑定

如何在C ++中编写简短的文字?

如何在C ++中编写简短的文字?

C++
汪汪一只猫 2019-11-29 15:45:12
一个非常基本的问题:如何short用C ++ 编写文字?我知道以下几点:2 是一个 int2U 是一个 unsigned int2L 是一个 long2LL 是一个 long long2.0f 是一个 float2.0 是一个 double'\2'是一个char。但是我怎么写short文字呢?我试过了,2S但是给出了编译器警告。
查看完整描述

3 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

((short)2)

是的,严格来说,这不是一个简短的字面量,更多的是强制转换,但是行为是相同的,我认为没有直接的方法。


那就是我一直在做的事情,因为我什么也找不到。我猜想编译器足够聪明,可以像编译短文字一样进行编译(即实际上不会分配int然后每次都强制转换)。


下面说明了您应该为此担心多少:


a = 2L;

b = 2.0;

c = (short)2;

d = '\2';

编译->反汇编->


movl    $2, _a

movl    $2, _b

movl    $2, _c

movl    $2, _d


查看完整回答
反对 回复 2019-11-29
?
FFIVE

TA贡献1797条经验 获得超6个赞

C ++ 11使您接近所需的内容。(搜索“用户定义的文字”以了解更多信息。)


#include <cstdint>


inline std::uint16_t operator "" _u(unsigned long long value)

{

    return static_cast<std::uint16_t>(value);

}


void func(std::uint32_t value); // 1

void func(std::uint16_t value); // 2


func(0x1234U); // calls 1

func(0x1234_u); // calls 2


// also

inline std::int16_t operator "" _s(unsigned long long value)

{

    return static_cast<std::int16_t>(value);

}


查看完整回答
反对 回复 2019-11-29
  • 3 回答
  • 0 关注
  • 510 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信