INT_MAX 定义一个整型的最大值。
如果我代码这么写
#define INT_MAX +500; //我想定义的是最大的整数是+500.
int main(void)
{
int a = 501;
printf("%d",a);
return 0;
}
我的理解是,501已经超出了 limit定义的 INT_MAX的最大值500,此处应该无法输出或者报错才对,但是为什么能正常的输出501.求解
limit.h里的数据,从设计上而言,是给人看的,不是给机器看的。实际上的整数最大合法值是硬件和编译器共同决定的(硬件实现是决定性因素),你再怎么define也不可能通过软件改变硬件实现啊。INT_MAX仅仅是为了方便程序员,由库的实现者写的一个值,它并不真正决定int最大值。就跟磁感线一样,它只是方便研究描述磁现象而人为规定的一种东西,你把课本上的磁感线改成别的样子,并不能影响现实中磁场的实际形态。这里的INT_MAX和int最大值的关系就类似于书上的磁感线和实际磁场的关系。
感谢,简单易懂,谢谢了!
#define 只是一个预编译指令。
如#define INT_MAX 500 编译器会在编译之前把程序中所有的INT_MAX替换成500再编译
你写的代码中没有用到INT_MAX所以预编译时也没有做任何替换和没有定义差不多。明白意思了吗?
要实现你的思路可以这样写代码:
#define INT_MAX 500; //我想定义的是最大的整数是500.
int main(void)
{
int a = 501;
if(a > INT_MAX)
{
printf("Error:The max int is %d\n", INT_MAX);
}else{
printf("%d",a);
}
return 0;
}