预处理-宏定义一讲中,一道经典面试题宏定义一年有多少秒?由此引发知识点的模糊,所以写博客作为记录,也共大家学习!

此题不考虑闰年问题,如下:

#define  SEC_PER_YEAR  356*24*60*60

那么问题来了,到底这样定义好不好,我们知道宏定义是在预处理的时候做的,在预处理时他会将字符串SEC_PER_YEAR替换成356*24*60*60。

程序如图:

经过gcc -E 预编译后如图:

结果是:

为了数据的完整加()能让此宏定义更加安全,C语言默认宏定义的整形数字是 int,为了让该宏定义完美运行在8位、16位、32位、64位机器中将宏改进为:

#define  SEC_PER_YEAR  (356*24*60*60)UL

在去编译,你会发现出错了!错误是  error: expected ‘,’ or ‘;’ before ‘UL’明明对着呢,为啥会错呢!就因为UL,UL告诉编译器(是编译器非预编译器)此时是unsigned long int类型,U和L是 “整数常量” 的后缀修饰,因此UL只能修饰整数常量本身;所以将宏写为:

#define  SEC_PER_YEAR  (356*24*60*60UL)

此时在编译发现完美运行,这回美了,定义出个完美的宏,错!在C51编译器中int是16

位的,int最大值是32767,然而356*24*60 是int类型已经溢出,所以依然得不得完美的宏。所以次宏改为:

#define  SEC_PER_YEAR  (1UL*356*24*60*60)

这次终于完美了;1UL保证以后的数据不会在任何情况下溢出!

由于我没有51编译器,下面给个师哥的关于宏定义数据溢出的测试结果笔记链接:

阿树师兄的笔记

通过笔记也可以加深对数据溢出的理解!

关于经典面试一年多少秒的思考!启发#define与UL!相关推荐

  1. 关于经典面试一年多少秒的思考!启发#define与UL!整形常量的定义

    关于经典面试一年多少秒的思考!启发#define与UL! 2016年01月11日 13:52:03 Agou_66 阅读数:1935 标签: C语言#defineUL宏定义一年多少秒 更多 个人分类: ...

  2. java经典面试题目

    java经典面试题目 网页静态化 1.什么是网页静态化(定义)? 网页静态化是指通过动态网站静态化将动态网站以静态化的方式展现出来 2.网页静态化的优点和好处? 1.静态页面相对于动态页面更容易被搜索 ...

  3. 全新整理:微软、谷歌、百度等公司经典面试100题[第1-60题]

    全新整理:微软.谷歌.百度等公司经典面试100题[第1-60题] 整理:July.二零一一年三月九日. 应网友承诺与要求,全新整理.转载,请注明出处. 博主说明: 此100题V0.2版,本人不再保证, ...

  4. 全新整理:微软、谷歌、百度等公司经典面试100题[第101-160题]

    全新整理:微软.谷歌.百度等公司经典面试100题[第101-160题] 整理:July.二零一一年三月九日. 应网友承诺与要求,全新整理.转载,请注明出处. 博主说明: 此100题V0.2版,本人不再 ...

  5. 全新整理 微软 谷歌 百度等公司经典面试100题 第101 160题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 全新整理 ...

  6. 嵌入式工程师的经典面试题目及答案

    上个星期,去深圳一家搞ARM开发的公司面试,HR叫我做了一份卷子,里面都是C编程,心中暗喜,因为这些题基本上都在程序员面试宝典里见过.后来回到学校,在网上搜索,原来这些题都是嵌入式工程师的经典面试题目 ...

  7. 微软、谷歌、百度等公司经典面试100题[第101-160题]

    全新整理:微软.谷歌.百度等公司经典面试100题[第101-160题] 整理:July.二零一一年三月九日. 应网友承诺与要求,全新整理.转载,请注明出处. 博主说明: 此100题V0.2版,本人不再 ...

  8. Java经典面试(二)

    Java经典面试(二) 1.volatile是什么 2.JMM JMM可见性 3.volatile不保证原子性 volatile不保证原子性理论解释 解决volatile不保证原子性问题 4.vola ...

  9. 嵌入式工程师的经典面试题目

    嵌入式工程师的经典面试题目 预处理器(Preprocessor) 1 . 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)       #define  SECONDS ...

最新文章

  1. 开需求评审会,你会出汗吗?
  2. 50道mysql笔试题目及答案_50道SQL练习题及答案与详细分析!!!
  3. 数据仓库在HDFS上存储数据的路径(持续更新中)
  4. python安装地是什么_如何安装python
  5. 小区信息发布服务器,基于串口服务器的智能小区信息发布系统
  6. NEW RToax logo
  7. Python递归函数的正确理解与使用
  8. 移动管理进步显著 企业仍然面临风险
  9. mysql主从同步故障整理
  10. C#格式化小数位的方法
  11. Oracle 导出DMP
  12. WebX RPC说明
  13. LaTex制作中文简历模板_PART 1
  14. 浙江开票系统服务器窗口,浙江增值税发票综合服务平台常见问题解答
  15. iOS 5.1实现旋转屏幕
  16. SVAC-Intra-Prei 代码分析(帧内预测最佳预测角度的选择)
  17. 计算机安装不了cad2007,win10系统电脑中安装cad2007不兼容无法打开的还原方法
  18. 英语作业介绍一项发明计算机,计算机专业英语第1次作业.doc
  19. python中#!含义
  20. 成就系统实现(一)-概述

热门文章

  1. u盘属于计算机软件吗,u盘属于哪一类商标
  2. 【转载】基于Office Online Server 2016 的office在线编辑
  3. 羊了个羊是怎么赚钱的
  4. Visual Studio 2017 下载地址 V15各种版本官方下载网址
  5. 宏基因组学数据分析在生物医学领域的应用
  6. root的小米如何升级,小米开发版怎么刷root
  7. 手机失窃个人信息泄露彻底
  8. MongoDB查询集合中的文档
  9. 网上订餐管理系统的设计与实现
  10. 生鲜行业B2B电商平台解决方案,提高企业交易流程标准化和透明度