我如何从一个8位整数中得到一个大于8位的值?
我找到了隐藏在这个小宝石后面的极其讨厌的错误。我知道,按照C ++规范,带符号的溢出是未定义的行为,但是只有当值扩展到bit-width时才发生溢出sizeof(int)。据我了解,增加a char永远不会是未定义的行为sizeof(char) < sizeof(int)。但这并不能解释如何c获得不可能的价值。作为8位整数,如何c保存大于其位宽的值? 码 // Compiled with gcc-4.7.2 #include <cstdio> #include <stdint.h> #include <climits> int main() { int8_t c = 0; printf("SCHAR_MIN: %i\n", SCHAR_MIN); printf("SCHAR_MAX: %i\n", SCHAR_MAX); for (int32_t i = 0; i <= 300; i++) printf("c: %i\n", c--); printf("c: %i\n", c); return 0; } 输出量 SCHAR_MIN: -128 …