标题:求解,int 和 size_t 的区别
只看楼主
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
结帖率:80%
 问题点数:0 回复次数:2 
求解,int 和 size_t 的区别
#include <stdio.h>
 #define ELEMENT_COUNT   (sizeof (array)/sizeof (array[0]))
int array[]={1,2,3,4,5} ;
 int main (void)
{
int  d = -1 ;
/*  ... ... ... */
if (d <= ELEMENT_COUNT)
printf ("Ha ha ,we succeed ! \n");
 return  0;
 }
为什么没有输出那句话?求解。
搜索更多相关主题的帖子: include 
2014-05-14 22:20
top398
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:427
专家分:857
注 册:2014-5-2
得分:0 
因为一般在32位环境下, size_t 是 unsigned int,64位环境下则是 unsigned long long。
在比较 int 和 unsigned int 时,将按照 unsigned int 来比较,因此在32位环境下,
d == (int)-1 == (unsigned int)0xffffffff == 4294967295。


if (d <= ELEMENT_COUNT)
改为
if (d <= (int)ELEMENT_COUNT)
即可。
2014-05-14 23:00
幽灵X
Rank: 5Rank: 5
等 级:职业侠客
帖 子:128
专家分:328
注 册:2013-1-28
得分:0 
回复 2 楼 top398
哦,原来是这样,谢谢了
2014-05-15 09:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431542-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.337150 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved