关于char表示的范围
时间:2009-04-14 来源:hubo214
#include <stdio.h>
int main()
{
unsigned char i;
int sum;
for (i=0,sum=0; i<300; i++)
sum += i;
printf("%d",sum);
return 0;
}
编译后显示:
00.c: In function ‘main’:
00.c:6: warning: comparison is always true due to limited range of data type
00.c:10:2: warning: no newline at end of file
因为 unsigned char 表示的范围为0~255,由于300>255,故出错。此处的 i<X,X的上限为255。
再看类似的例子:
#include <stdio.h>
int main()
{
char i;
int sum;
for (i=0,sum=0; i<200; i++)
sum += i;
printf("%d",sum);
return 0;
}
编译后,显示:
00.c: In function ‘main’:
00.c:6: warning: comparison is always true due to limited range of data type
这是因为:char 表示数的范围为: -128~127,由于200>127,所以出错。此处的 i<X,X的上限为127。
int main()
{
unsigned char i;
int sum;
for (i=0,sum=0; i<300; i++)
sum += i;
printf("%d",sum);
return 0;
}
编译后显示:
00.c: In function ‘main’:
00.c:6: warning: comparison is always true due to limited range of data type
00.c:10:2: warning: no newline at end of file
因为 unsigned char 表示的范围为0~255,由于300>255,故出错。此处的 i<X,X的上限为255。
再看类似的例子:
#include <stdio.h>
int main()
{
char i;
int sum;
for (i=0,sum=0; i<200; i++)
sum += i;
printf("%d",sum);
return 0;
}
编译后,显示:
00.c: In function ‘main’:
00.c:6: warning: comparison is always true due to limited range of data type
这是因为:char 表示数的范围为: -128~127,由于200>127,所以出错。此处的 i<X,X的上限为127。
相关阅读 更多 +