数组长度判断时出现的诡异问题总结
来源:互联网 发布:vue.js html 编辑:程序博客网 时间:2024/06/05 15:24
昨天同事在项目中,对一个数组长度进行判断的时候,出现了一个诡异的情况。
在判读数组长度是否大于6时,使用数组长度减去6进行判断,代码如下:
// 翻看数组NSArray的API后发现,数组的count属性类型是NSUInteger,对应C语言中的无符号整型,当一个整型类型的数(int 类型)和无符号整型(unsigned int类型)的数相做加减运算时,运算的结果是一个无符号整型(unsigned int)类型.所以,在上面的示例中, [listArray count] - 6 > 0 的值是大于0的,所以在进行无符号整型(unsiged int)和整型(int)的运算的时候,需要特别注意,上面代码的正确写法应该如下:
在判读数组长度是否大于6时,使用数组长度减去6进行判断,代码如下:
NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil]; if ([listArray count] - 6 > 0) { NSLog(@"listArray数组的长度大于6");//即使数组长度为2也会打印出信息 }
// 翻看数组NSArray的API后发现,数组的count属性类型是NSUInteger,对应C语言中的无符号整型,当一个整型类型的数(int 类型)和无符号整型(unsigned int类型)的数相做加减运算时,运算的结果是一个无符号整型(unsigned int)类型.所以,在上面的示例中, [listArray count] - 6 > 0 的值是大于0的,所以在进行无符号整型(unsiged int)和整型(int)的运算的时候,需要特别注意,上面代码的正确写法应该如下:
NSMutableArray *listArray = [[NSMutableArray alloc] initWithObjects:@"cell1",@"test2", nil]; int judgeCase = [listArray count] - 6 ;//将unsiged类型的值强制转化成int类型 if (judgeCase > 0) { NSLog(@"listArray数组的长度大于6");//即使数组长度为2也会打印出信息 }
- 数组长度判断时出现的诡异问题总结
- 诡异的JS数组长度
- 字符转换时出现的诡异问题
- 判断数组的长度,判断数组中重复的数字及其出现的次数
- Mac配置Node出现的诡异问题
- iOS中判断数组长度问题
- 诡异的数组用法
- MySQL安装后出现的诡异的问题
- ubuntu 12.04 下运行 vmware 7.1.5 时出现的诡异问题
- 使用CCJumpby()和CCRect时出现的诡异问题,求解答。
- linux下C编程free()时出现飘忽诡异的段错误(核心已转储)问题
- linux下C编程free()时出现飘忽诡异的段错误(核心已转储)问题
- c++对象成员函数返回自身引用时出现的诡异问题及解决办法
- DES 算法 在C++builder中出现的诡异问题
- JS数组的长度问题
- amfphp的一个诡异的问题!数组移位
- 两道“诡异”的数组越界问题的分析
- 字符串指针和字符数组的诡异问题
- 修改informix数据库服务监听端口
- Linux V4L2 摄像头视频采集
- winform程序调用webservice时的Session问题
- 设置QPushButton的平面与突出(遍历控件)
- hdu 1198 Farm Irrigation
- 数组长度判断时出现的诡异问题总结
- Linux下使用Shell脚本快速创建项目目录模板
- mysql 自动备份数据库 批处理文件
- 倪光南:离岸外包收效不大 应大力发展嵌入式软件
- Android窗口标题显示操作
- Java TCP/IP协议笔记:基本套接字
- rdesktop架构解析(RDP协议分析)
- 讲座信息
- 全排列问题