69,373
社区成员
发帖
与我相关
我的任务
分享
int arry[] = {23, 34, 12, 17, 204, 99, 16};
#define TOTAL_ELEMENTS (sizeof(arry) / sizeof(arry[0]))
int main()
{
int d = -1;
/* ... */
if(d < = TOTAL_ELEMENTS -2)
x = arry[d+1];
}
这里if表达式的值却不是真的,因为sizeof()的返回值是 unsigned int ,d的只是signed int,导致d 被转换成一个很大的正整数。楼主的和这个也差不多char a = -1;
int b = (signed char)a; // -1
int c = (unsigned char)a; //1
int a = 0xff;
char b = -5;
if (b<0)
{
a=-1;
a&=b;
}
else
{
a=0;
a&=b;
}