有没有人知道一个聪明的C++或C技巧,可以把 >转换为 >,同时也可以从“从”映射到“cc”?我试过了,但我不确定这是否是最佳的解决方案。那么什么是最好的方法呢?虽然这个问题主要集中在C++ 11,C回答也是受欢迎的。 最佳答案 如果要将[0 .. 65535]映射到[-32768 .. 32767],则不需要使用魔法c++咒语:只需减去32768。如果您的平台有32位整数,整数提升将使下面的表达式完全定义:uint16_t uv = <some value>;int16_t sv = uv - 32768;如果类型int32_t可用,则可以编写:uint16_t uv = <some value>;int16_t sv = (int32_t)uv - 32768;但是第一个版本也完全定义在16位int的平台上,因为32768将在那里有long类型,uv将转换为long类型,并保留其值。根据定义,结果在类型int16_t的范围内,因此没有问题。关于c++ - 映射最小值和最大值时从无符号转换为有符号的最佳方法?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55089721/
10-10 22:16