避免用char类型作为数组小标
来源:互联网 发布:fanuc编程软件 编辑:程序博客网 时间:2024/06/18 02:20
在统计字符串的时候常用数组来统计,字符为数组下标,如求字符串中第一个不重复(只出现过一次)的字符
但是字符的类型是char类型可能为负数,不能做下标。
不能把char强转成 unsigned int 做下标,因为类型提升的时候,是按照高位填充的多余字节,如果char本身为负数,第8位就是1,转成 unsigned int 或者int时多出来的三个字节都是填充1;如果是0,则都填充0
如 char c=-128 ,内存中二进制位 10000000 ,十六进制为 0x80
无是提升为unsigned int 还是 int ,其内存都是 11111111 11111111 11111111 10000000 即0xffffff80
int main(){char c = -128;unsigned int uint = c;cout << uint << endl;printf("%u\n", uint);printf("%d\n", uint);uint = (unsigned int)c;cout << uint << endl;printf("%u\n", uint);printf("%d\n", uint);int tint = c;cout << tint << endl;printf("%u\n", tint);printf("%d\n", tint);}
结果:
4294967168
4294967168
-128
4294967168
4294967168
-128
-128
4294967168
-128
正确做法:
将 char 转成unsigned char 做下标
0 0
- 避免用char类型作为数组小标
- 用枚举类型作为数组下标
- char类型数组探究
- 避免使用Oracle的char类型
- char类型数组的易错点
- 将char *类型作为map的key时要谨慎。
- int类型数组压缩为char类型数组存储
- 怎样把CString类型转为char数组
- 复习1:bool类型和char数组
- 【STL】 string和char 数组类型互换
- int和char数组之间类型转换
- char * 类型的变量和 char 型数组重新赋值
- 用 char*作为std::map中的key
- 用char数组
- char、char*、char**数组
- char、char*、char**数组
- char、char*、char**数组
- char、char*、char**数组
- POJ 2155 Matrix
- 一次快速排序错误引发的思考
- cocos2d-x 进度条实现(被砍)掉血效果
- Linux命令大观
- C/C++高阶语法:函数指针及其应用
- 避免用char类型作为数组小标
- hdu 5532 Almost Sorted Array
- sapi_module_struct 研究(一)
- LeetCode:Rectangle Area
- Lesson 6 Transposition and conjugation
- PHP怎么与C语言通信
- OC第五天之 Dictionary NSSet 数组排序
- c++中的引用和指针
- ACM之括号匹配(二)