【正确答案】
【答案解析】#define SECOND_PER_YEAR(60*60*24*365)UL
在以上定义中,需要注意以下3个方面的内容:
1)由于宏定义是预处理指令,而非语句,所以在进行宏定义时,不能以分号结束。
2)预处理只会执行简单的替换,不会计算表达式的值,所以需要注意括号的使用,直接写出是如何计算出一年中有多少秒而不是计算出实际的值。
例如:
#define N4+5
cout<<2*N;
如果预处理计算表达式的值,那么输出结果应该是2x(4+5),等于18,可是实际输出结果却是2x4+5,等于13。
3)考虑到可能存在数据溢出问题,更加规范化的写法是使用长整型,即UL类型,告诉编译器这个常数是长整型数。