让你定义一个宏,说出一年有多少秒:


答案如下:

#define SECONDS_PER_YEAR 60*60*24*365(UL)

“这样的好处是:写出公式而不用动手计算,让编译器给你计算,省脑子。重点是你还写出了结果的来源,条理清晰,便于阅读。还有,那个UL显示了你对数据大小的严谨,”


“切~用你说?谁不知道?”——看到这,很多人一定对这个帖子嗤之以鼻,相信这是很多C语言玩家烂熟于心的一个答案了吧?!

SECONDS_PER_YEAR就是秒每年吧——秒/年!

那么,一年到底有多少秒?我再换个问法,每年都一样么?闰年你又怎么解决?众所周知,每四年有一个闰年,这还不是全部,逢百年的时候你必须用年份除以四百,除得开才是闰年。

地球围绕太阳公转一周(即360度)的时间应该为365日6时9分10秒,即为一个恒星年。

地球的某点获得两次两次直射的间隔是365日5时48分46秒更加精确:365天5小时48分45.975456秒),即为一个回归年。

一个回归年折算成小数,大概是365.2422日,400年里多出了96.88天,而按四年一个闰年算,400年里少3个闰年,即总共97个闰年,闰年是调节回归年的。前边也提了闰年规则是四年一补,补多了要减去点,如果按恒星年补,四年一个闰年还不够,哪会让你四百年内还少三个闰年呢。

看到这里,相信各位小伙伴已经有答案了:

#define 365*24*60*60+5*60*60+48*60+46(UL)
//很有条理很清晰吧?怎么样,我说,你还不如用计算器了~~一定要加上文字注释~!!!

不过还有意外,他问的会不会是恒星年?恒星年就按如下定义

#define 365*24*60*60+6*60*60+9*60+10(UL)
//一定要加上文字注释~~告诉他这是恒星年

我们也看到,没有什么东西是那么精确的,如果按365天5小时48分45.975456秒算,那应该使用浮点数

31556925.9754456(这还不是绝对精度~~~)

如果按这个数,32位的浮点还是够用的。

怎么样,躺着中枪了吧,这么简单的C语言你都不会,回去面壁吧。

不过还有方法,你跟他说你这次定义的是日历非闰年:

#define SECONDS_PER_YEAR_Non_Leap_Year 60*60*24*365(UL)
#define SECONDS_PER_YEAR_Leap_Year 60*60*24*366(UL)

绕回来了

深藏功与名,叫我胡学究

带上你的贞操和逻辑,欢迎较真抬杠,转发请注明出处。



C语言宏定义——一年有多少秒相关推荐

  1. 问:用宏定义一年有多少秒(忽略闰年)

    问:用宏定义一年有多少秒(忽略闰年) 答: #define  SECONDS_PER_YEAR  60*60*24*365UL   //加UL,是为了防止溢出

  2. c语言 #define dpath .exe是什么意思,C语言宏定义#define

    姓名:吕彬 学号:1613014035 [嵌牛导读]#define 宏定义是个演技非常高超的替身演员,但也会经常耍大牌的,所以我们用它要慎之又慎.它可以出现在代码的任何地方,从本行宏定义开始,以后的代 ...

  3. c语言解除宏定义_C语言宏定义 define,及一些陷阱!

    https://m.toutiaocdn.com/group/6584292311289561607/?iid=39362926900&app=news_article&timesta ...

  4. c语言中#39;xd#39;代表什么,关于C语言宏定义的技巧:#39;##39;和#39;###39;

    关于C语言宏定义的技巧:'#'和'##' '#'和'##' '#'和'##'是两个预处理运算符,只能在预处理的过程中使用.在带参数的宏定义中, '#'运算符后面应该跟一个参数,预处理器会把这个参数转换 ...

  5. 转载--c语言宏定义(1)

    作者:独舞风 链接:c语言宏定义(1) 1.为什么要有宏定义? 代码中某个特定数值需要参与运算,而且该数值作用于多个地方,当需要对该数值进行修改时,希望只改动一个地方就能实现该数值的全部更新:即便某个 ...

  6. C/C++语言宏定义##连接符和符#的使用

    C/C++语言宏定义##连接符和符#的使用     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53113187 (一) ...

  7. c语言 宏定义 去除宏定义_如何检查是否在C中定义了宏?

    c语言 宏定义 去除宏定义 To check whether a Macro is defined or not in C language – we use #ifdef preprocessor ...

  8. c语言宏定义技巧和用法,关于C语言宏定义的技巧:'#'和'##'

    关于C语言宏定义的技巧:'#'和'##' '#'和'##' '#'和'##'是两个预处理运算符,只能在预处理的过程中使用.在带参数的宏定义中, '#'运算符后面应该跟一个参数,预处理器会把这个参数转换 ...

  9. c语言 宏do while,关于C语言宏定义 使用do{ xxxx }while()

    暂时感觉像是由于":"的原因,关于使用习惯方面的问题!! 下面是copy的: 这样的宏见过么: Cpp代码 #define FOO(x) do {\ some_code_line_ ...

最新文章

  1. Codeforces Round #321 (Div. 2) B. Kefa and Company (尺取)
  2. java添加容器_如何为Java应用程序构建docker容器
  3. 在Linux下禁用键盘、鼠标、触摸板(笔记本)等输入设备
  4. MATLAB的dir函数
  5. php设置cookie 域名,php如何设置cookie对整个域名有效?
  6. 贵州:2018经济增速继续领先 2019“九字真言”主攻高质量
  7. ping命令两种返回信息的区别
  8. 大数据可以应用在哪些行业?
  9. 【重识云原生】第六章容器基础6.4.10.5节——Statefulset原理剖析
  10. 充电宝为arduino供电
  11. verdi 文件格式转换及差异
  12. php+mysql统计7天、30天每天数据没有补0
  13. vite 设置启动Network 为本地ip
  14. 什么是JavaBeans
  15. 微信小程序 - 获取用户信息
  16. 对UART、RS232、485通信的理解
  17. 颜色帮你缓解职场压力 给你的心情换个色
  18. 【Proteus仿真】51单片机+PCA9685 16路舵机控制
  19. 决策树算法中处理噪音点
  20. 3dMaxs下载链接

热门文章

  1. 优化器optimizer
  2. Office frontpage 2003 SKU017.CAB
  3. FineReport中如何制作树数据集来实现组织树报表
  4. 案例学习-万事达卡全球业务服务中心(GBSC)
  5. STM32 FreeRTOS CMSIS—OS
  6. Java Web前端到后台常用框架介绍
  7. Hutool 自定义excel导出
  8. 利用openCV实现中值滤波自定义滤波窗口尺寸的功能(类似halcon中的median_rect函数功能)
  9. python字典相乘_知乎
  10. sap甲方_SAP顾问现状