众所周知,有符号整数溢出是未定义的行为.但是C++ 11 cstdint
文档中有一些有趣的东西:
有符号整数类型,宽度分别为8,16,32和64位,没有填充位,负值使用2的补码(仅当实现直接支持该类型时提供)
这里是我的问题:由于标准明确地说,对int8_t
,int16_t
,int32_t
和int64_t
负数是2的补,仍然是这些类型的未定义行为的泛滥?
编辑我检查了C++ 11和C11标准,这是我发现的:
C++ 11,§18.4.1:
标题定义了所有函数,类型和宏,与C标准中的7.20相同.
C11,§7.20.1.1:
typedef名称
intN_t
指定有符号整数类型,其宽度为N,无填充位和二进制补码表示.因此,int8_t
表示这样的带符号整数类型,其宽度恰好为8位.
当最后有零时,是否有任何找到反向的技术.
在遵循%10技术的算法时,结果为52.并且0缺失.
我只是通过打印提醒(0)来反过来.但我不满意,因为我希望将答案显示为变量中的值.
请告诉我是否有任何技术将值005存储到变量并显示005(请不要使用字符串或字符或数组).