博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C 强制类型转换 char转int的小陷阱
阅读量:3958 次
发布时间:2019-05-24

本文共 307 字,大约阅读时间需要 1 分钟。

今天遇到一个小陷阱。

本来想看一个字符转成整型之后对应的值,结果竟意外的发现,转成的整型大于256。我:????字符不是只有一个字节么?
我把这个字符的前后字符都置0,结果还是一样。我就懵逼了。一查才知道,和signed char转成int的“潜规则”有关。
原来,对于signed char,将其转化为int时,最高位为符号位,那么扩展时,就会对符号位进行扩展,即将整型比字符多出来的位全部设置成与符号位相同。比如0x80,变成int就会变成0xffffff80;而0x70就会变成0x00000070。
而unsigned char就不会进行扩展,因此想表示byte的时候,最好使用unsigned char。

转载地址:http://jtxzi.baihongyu.com/

你可能感兴趣的文章
Eclipse Debug调试
查看>>
Eclipse Debug调试
查看>>
Hibernate的注解和XML
查看>>
JavaScript闭包
查看>>
JavaScript原型
查看>>
JavaScript原型
查看>>
JavaScript原型
查看>>
JDK工具
查看>>
JDK工具
查看>>
JNA-JNI升级版
查看>>
JNA-JNI升级版
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>
Android 下 JNI 开发
查看>>