1.
main()
{
if(-1<(unsigned char)1)
printf("-1 is less than (unsigned char)1:ANSI semantics");
else
printf("-1 NOT less than (unsigned char)1:K&R semantics");
}
2.
int array[] = {23,41,12,24,52,11};
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
main()
{
int d = -1,x;
if(d<=TOTAL_ELEMENTS -2)
x = array[d+1];
}
第一转换无符号字符1到的标志ed变量,而第二个程序将d转换为一个无符号整型,这使得在ANSI C中 条件表达式返回false。 为什么它们的行为有所不同?
在你的第二个代码示例中,你的意思是“数组”而不是“arrary”吗? – mweiss 2009-02-01 09:56:53