C语言中的宏定义,该怎么处理

C语言中的宏定义
#include "stdio.h"
#define SECONDS_PER_YEAR 60*60*24*365

int main(){
int s = SECONDS_PER_YEAR;
printf("SECONDS_PER_YEAR=%d\n",s);
}

如上程序,不是应该在#define SECONDS_PER_YEAR 60*60*24*365后面加UL,改成#define SECONDS_PER_YEAR 60*60*24*365UL 才对吗?  为啥以上程序在VC2010能输出正确的结果: SECONDS_PER_YEAR=31536000
哪位大神可以指教一下?
------解决方案--------------------
31536000又没有超过int类型的上限...
------解决方案--------------------
int范围是-2^32 -- 2 ^32 - 1。 你没超过这个范围,自然不用做转换。
而且,如果加了UL,前面最好变为unsigned long s = SECONDS_PER_YEAR; 否则容易溢出 
------解决方案--------------------
60*60*24*365 =31536000;
2**32 -1 =4294967295; 
没有超过int