unsigned char c=-1;
-1是按照int类型存储的常量吧 打印出来的c是直接把-1的补码模式的最后一个字节直接抄给c了 c语言的等号就是直接按位照抄么? 把常量赋予变量的时候会不会对常量先转化某种与变量比较搭配的类型再赋予?
unsigned char c=-1;
-1是按照int类型存储的常量吧 打印出来的c是直接把-1的补码模式的最后一个字节直接抄给c了 c语言的等号就是直接按位照抄么? 把常量赋予变量的时候会不会对常量先转化某种与变量比较搭配的类型再赋予?
3 回答2k 阅读✓ 已解决
2 回答3.9k 阅读✓ 已解决
2 回答3.3k 阅读✓ 已解决
1 回答3.3k 阅读✓ 已解决
1 回答2.7k 阅读✓ 已解决
3 回答3.5k 阅读
3 回答513 阅读✓ 已解决
ISO C 标准中写到
换句话说,unsigned char 的表示范围是 [0, 255],不能表示 -1,于是将 -1 加上 256 得到 255。
如果是把 signed char 型 -1 转成 unsigned int,则用 -1 加上 4294967296 得到 4294967295。
对硬件来说,从有符号到无符号的转换就是简单地在前面补符号位或者直接截断。