众所周知,char是8位,所以它可以存储0到255之间的值,
如果我初始化一个像369这样的更大值的char,我会得到与113相同的二进制模式,即:MSVC12下的01110001
它是标准的,还是未定义的行为?
请注意369 - 256 == 113.
4.7完整转换,第2和第3段:
如果目标类型是无符号的,则结果值是与源整数一致的最小无符号整数(模2 ^ n,其中n是用于表示无符号类型的位数).
如果目标类型已签名,则如果可以在目标类型(和位字段宽度)中表示该值,则该值不会更改; 否则,该值是实现定义的.
但无论是char表示相同unsigned char还是signed char实现定义.
所以这种行为确实取决于编译器,尽管大多数都会这样做.