写个宏定义一年有多少秒

depositpei 2010-08-24 01:17:51
忽略闰年
#define S (365*24*3600)


这么写哪里错了呢
...全文
1579 40 打赏 收藏 转发到动态 举报
写回复
用AI写文章
40 条回复
切换为时间正序
请发表友善的回复…
发表回复
deveoper 2013-03-07
  • 打赏
  • 举报
回复
&表示什么,,
luossan 2012-10-08
  • 打赏
  • 举报
回复
#define SECOND_PER_YEAR (60UL*60*24*365);其它的都是错的或不可靠.例如 #define SECOND_YEAR (60*60*24*365UL),这要看你的编译器默认的整型是多少位的,不然可能中间运算时已导致溢出.
#define SECOND_YEAR (60*60*24*365)UL.语法不对
run_boy 2011-03-18
  • 打赏
  • 举报
回复
[Quote=引用 28 楼 fanyinbo 的回复:]
#define S (60 * 60 * 24 * 365)UL
[/Quote]
ok
peterho386 2010-08-26
  • 打赏
  • 举报
回复

#define Seconds_Of_Year(year) { (((( (year % 4==0) && (year % 4==0) ) || (year % 400==0)) ? 1 : 0 )+365) * 24 * 3600 }

不润年 : 31536000秒
润年 : 31622400秒
sunrier 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 29 楼 bobo364 的回复:]
加了UL编译没法通过

C/C++ code
//#define SECS_PER_YEAR (365*24*3600)UL
#define SECS_PER_YEAR (365*24*3600)

int main()
{
printf("%d",SECS_PER_YEAR);
system("pause");
return 0;
}
[/Quote]
嘿嘿,一般嵌入式开发上不怎么用VC环境
bobo364 2010-08-26
  • 打赏
  • 举报
回复
加了UL编译没法通过
//#define SECS_PER_YEAR (365*24*3600)UL
#define SECS_PER_YEAR (365*24*3600)

int main()
{
printf("%d",SECS_PER_YEAR);
system("pause");
return 0;
}
fanyinbo 2010-08-26
  • 打赏
  • 举报
回复
#define S (60 * 60 * 24 * 365)UL
zrebecca 2010-08-26
  • 打赏
  • 举报
回复
#define S (60 * 60 * 24 * 365)UL
sunrier 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 tietao 的回复:]
#define S (60 * 60 * 24 * 365)UL
都是推荐这样写的,
一是这个宏的可读性,
二是加上UL长整型,保证这个值不会越位溢出。
这是面试时,考的细节。
[/Quote]
三,易理解性 S改为SEC_A_YAER 程序规范
某某9 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 depositpei 的回复:]

#define SECS_PER_YEAR (365*24*3600)UL
这个在VC下面调试部通,编译不通过
[/Quote]

加上ul可以吗? 还带个括号
zqlee1216 2010-08-26
  • 打赏
  • 举报
回复
润年不能忽略吧
yzx714 2010-08-26
  • 打赏
  • 举报
回复
对于int溢出了
Q446512799 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 newerc 的回复:]
你们确信一年就是365天吗
[/Quote]
你确信你仔细看LZ说的了吗
忽略闰年
#define S (365*24*3600)


这么写哪里错了呢

~~你是一个好人,好人修电脑啊,还做好人-_-
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 depositpei 的回复:]
#define SECS_PER_YEAR (365*24*3600)UL
这个在VC下面调试部通,编译不通过
[/Quote]

其实你要知道,楼上那么多人这么用其主要就是转换,365*24*3600在CPU里运行的时候,寄存器里就设计到过界(溢出),加上UL就是将它转换成长整形,这样就不会越界,其实运算的时候还涉及到就大的规则,楼主可以这样365(UL)*24*3600
newerC 2010-08-26
  • 打赏
  • 举报
回复
你们确信一年就是365天吗
water1225 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 18 楼 tietao 的回复:]
#define S (60 * 60 * 24 * 365)UL
都是推荐这样写的,
一是这个宏的可读性,
二是加上UL长整型,保证这个值不会越位溢出。
这是面试时,考的细节。
[/Quote]

我面试的时候遇到过....
tietao 2010-08-26
  • 打赏
  • 举报
回复
#define S (60 * 60 * 24 * 365)UL
都是推荐这样写的,
一是这个宏的可读性,
二是加上UL长整型,保证这个值不会越位溢出。
这是面试时,考的细节。
nkinuyasha 2010-08-26
  • 打赏
  • 举报
回复
学习一下
jldream110 2010-08-26
  • 打赏
  • 举报
回复
学习了
chenjelly 2010-08-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 qweworld 的回复:]
#define SECS_PER_YEAR (365*24*3600)UL这种用法
表面上UL应该是指unsigned long的意思,也即SECS_PER_YEAR存储空间应该是个unsigned long类型。
整型存储不下(365*24*3600)所以用长整型.
[/Quote]
我在面试宝典里面看到相似的说法样
加载更多回复(20)

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧