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

一个非常基本的问题:如何short用C ++ 编写文字?

我知道以下几点:

  • 2 是一个 int

  • 2U 是一个 unsigned int

  • 2L 是一个 long

  • 2LL 是一个 long long

  • 2.0f 是一个 float

  • 2.0 是一个 double

  • '\2'是一个char

但是我怎么写short文字呢?我试过了,2S但是给出了编译器警告。


汪汪一只猫
浏览 511回答 3
3回答

波斯汪

((short)2)是的,严格来说,这不是一个简短的字面量,更多的是强制转换,但是行为是相同的,我认为没有直接的方法。那就是我一直在做的事情,因为我什么也找不到。我猜想编译器足够聪明,可以像编译短文字一样进行编译(即实际上不会分配int然后每次都强制转换)。下面说明了您应该为此担心多少:a = 2L;b = 2.0;c = (short)2;d = '\2';编译->反汇编->movl    $2, _amovl    $2, _bmovl    $2, _cmovl    $2, _d

FFIVE

C ++ 11使您接近所需的内容。(搜索“用户定义的文字”以了解更多信息。)#include <cstdint>inline std::uint16_t operator "" _u(unsigned long long value){&nbsp; &nbsp; return static_cast<std::uint16_t>(value);}void func(std::uint32_t value); // 1void func(std::uint16_t value); // 2func(0x1234U); // calls 1func(0x1234_u); // calls 2// alsoinline std::int16_t operator "" _s(unsigned long long value){&nbsp; &nbsp; return static_cast<std::int16_t>(value);}
打开App,查看更多内容
随时随地看视频慕课网APP