【发布时间】:2016-08-24 12:16:26
【问题描述】:
如何编写constexpr 函数来交换整数的字节顺序,而不依赖于编译器扩展,您能否举例说明如何做到这一点?
【问题讨论】:
-
什么是“整数的字节序”? 15 的字节序是多少?
-
@KerrekSB:在 C++(以及大多数一般编程)的上下文中,当人们说整数时,他们通常指的是整数对象。也就是说,内存中用于存储整数数据的区域,通常是基本整数类型之一(char、short、int、long 和 long long,以及它们的无符号变体)。你真的从来没有遇到过这种用法吗?
-
@BenjaminLindley:当然。我只是发现这个问题大大低估了。
-
@BenjaminLindley 我们可以猜到,但这个问题的措辞很糟糕,因为整数没有字节序。 (这是 Kerrek SB 试图指出的)。这值得一提,因为(根据此处的问题判断)许多人没有理解值和表示之间的区别,因此编写了脆弱或错误的代码
-
@M.M.好吧,我不同意,并且认为措辞很好。我理解 Kerrek 的观点,但只是认为这是不必要的迂腐和愚蠢。我想不出一个更好的措辞来解决这个问题,也不会浪费我的时间试图想出一个,因为每个知道什么是字节序的人都理解它,即使是 Kerrek。跨度>
标签: c++ c++14 endianness constexpr c++17