首页 > 代码库 > 有符号无符号数据的思考
有符号无符号数据的思考
int array[] = {1,2,3,4}; #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) int main() { int d = -1; if(d <= TOTAL_ELEMENTS) printf("TRUE\n"); else printf("FALSE\n"); }
sizeof()返回类型为无符号整型unsigned int,因此代码中的TOTAL_ELEMENTS值是unsigned int,在比较signed int和unsigned int时,signed int型变量被转换为unsigned int型变量,而-1转换为unsigned int型的结果是一个非常大的正整数,导致if判断为假,输出FALSE。解决办法是强制转换为int型:
#define TOTAL_ELEMENTS (int)(sizeof(array)/sizeof(array[0]));
int类型默认是有符号的!!!
有符号无符号数据的思考
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。