试题1:分别给出BOOL,int,float,指针变量与“零值”比较的 if 语句(假设变量名为var)

试题2:以下为Windows NT下的32位C++程序,请计算sizeof的值

void Func ( char str[100] )
{
 sizeof( str ) = ?
}

void *p = malloc( 100 );
sizeof ( p ) = ?

试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?

least = MIN(*p++, b);

---------------------------------------------------------------------------------------------

答案:

试题1:分别给出BOOL,int,float,指针变量 与“零值”比较的 if 语句(假设变量名为var)

  解答:

   BOOL型变量:if(!var)

   int型变量: if(var==0)

   float型变量:

   const float EPSINON = 0.00001;

   if ((x >= - EPSINON) && (x <= EPSINON)

   指针变量:  if(var==NULL)

  剖析:

  考查对0值判断的“内功”,BOOL型变量的0判断完全可以写成if(var==0),而int型变量也可以写成if(!var),指针变量的判断也可以写成if(!var),上述写法虽然程序都能正确运行,但是未能清晰地表达程序的意思。 
 一般的,如果想让if判断一个变量的“真”、“假”,应直接使用if(var)、if(!var),表明其为“逻辑”判断;如果用if判断一个数值型变量(short、int、long等),应该用if(var==0),表明是与0进行“数值”上的比较;而判断指针则适宜用if(var==NULL),这是一种很好的编程习惯。

  浮点型变量并不精确,所以不可将float变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。如果写成if (x == 0.0),则判为错,得0分。

  试题2:以下为Windows NT下的32位C++程序,请计算sizeof的值

void Func ( char str[100] )
{
 sizeof( str ) = ?
}

void *p = malloc( 100 );
sizeof ( p ) = ?
  解答:

sizeof( str ) = 4
sizeof ( p ) = 4
  剖析:

  Func ( char str[100] )函数中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅只是一个指针;在失去其内涵的同时,它还失去了其常量特性,可以作自增、自减等操作,可以被修改。

试题3:写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。另外,当你写下面的代码时会发生什么事?

least = MIN(*p++, b);
  解答:

#define MIN(A,B) ((A) <= (B) ? (A) : (B))
  MIN(*p++, b)会产生宏的副作用

  剖析:

  这个面试题主要考查面试者对宏定义的使用,宏定义可以实现类似于函数的功能,但是它终归不是函数,而宏定义中括弧中的“参数”也不是真的参数,在宏展开的时候对“参数”进行的是一对一的替换。

转载于:https://www.cnblogs.com/SCUTMSTechClub/archive/2011/01/03/1925081.html

[科技部与你共成长] 几道语言题相关推荐

  1. [科技部与你共成长] 数组循环移位

    设计一个算法把一个含有N个元素的数组循环右移K位,要求时间复杂度为O(N),且只允许使用两个附加变量. ------------------------------------------------ ...

  2. [科技部与你共成长] 倒牛奶

    农夫John有三个装牛奶的桶,容量分别为A.B.C,数字A.B.C是1到15的整数,开始时A桶.B桶为空,C桶装满牛奶.农夫John装牛奶从一个桶倒向另一个桶,直到该桶为空或另一个桶满为止,一个倒牛奶 ...

  3. 西八浅看道语言题。谢大佬们指教!

    当参数*x=1, *y=1, *z=1时,函数add的返回值可能是( )? int add(int add(int *x, int *y, int *z){*x += *x;*y += *x;*z + ...

  4. 2亿美元投入+软硬件新服务!华为加速构建计算产业生态,侯金龙:要与开发者共成长...

    乾明 边策 发自 凹非寺  量子位 报道 | 公众号 QbitAI 更便捷的开发工具和平台,更强劲的2亿美元投入,全天候专家在线服务计划-- 这就是华为最新的开发者扶持组合拳,也是华为正在举办的开发者 ...

  5. Java架构师成长之道之浅谈计算机系统架构

    Java架构师成长之道之浅谈计算机系统架构 Java架构师成长之旅 1.1 信息技术发展趋势 目前信息技术主要经历了互联网.移动互联网以及以大数据.云计算.人工智能和区块链为代表的新兴技术三个阶段.而 ...

  6. Java架构师成长之道之计算机组成原理组成篇

    Java架构师成长之道之计算机组成原理组成篇 Java架构师成长之道 2.1 计算机总线 2.1.1 总线概述 以通用串行总线USB(Universial Serial Bus)为例子来理解什么是总线 ...

  7. Java架构师成长之道之Java架构师技术栈

    Java架构师成长之道之Java架构师技术栈 Java架构师成长之道 JavaSE篇 Java概述与开发环境搭建 Java数据存储 Java数据运算 Java程序流程控制 Java数组 Java面向对 ...

  8. C语言经典算法100道实战题

    [C语言经典算法100道实战题]适合具备C语言基础语法的同学学习,提高编写程序的逻辑思维能力和算法设计能力专门精心设计.100个经典的算法供大家练习及配套对应的录播视频.为我们今后学习其它的编程语言和 ...

  9. Java架构师成长之道之Java程序流程控制

    Java架构师成长之道之Java程序流程控制 Java架构师成长之道 4.1 程序流程控制概述 之前编写的绝大多数程序都是顺序执行,也就是从main函数开始,由上到下一行一行的执行,也被称为顺序结构. ...

  10. c语言程序设计歌手大奖赛,C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委...

    导航:网站首页 > C语言二维数组怎么做:设计青年歌手参加歌曲大奖赛计分系统: 共...,怎样用c语言程序设计? 青年歌手参加歌曲大奖赛,有10个评委 C语言二维数组怎么做:设计青年歌手参加歌曲 ...

最新文章

  1. C语言字符串大小写转换_只愿与一人十指紧扣_新浪博客
  2. [翻译]Axure-Dynamic Panel(Basic)-原型设计工具Axure学习-第2.1节
  3. HTML 代码常用技巧
  4. linux monitor模式,ubuntu14.04 安装linux-802.11n csitool Monitor模式
  5. 三次样条插值 实验_【科普】理解数字图像插值(二)
  6. webservice / cxf 开发经验总结
  7. CASS软件学习笔记
  8. Linux笔记-scp或ftp或sftp传文件后最后修改时间
  9. android开发 方式有哪些,Android开发从入门到精通
  10. Linux命令rm的常用用法
  11. JavaWeb:JSON对象和Java对象的相互转换
  12. java libtorrent_[转载]libtorrent安装windows版
  13. armbian 斐讯n1_尝试使用斐讯N1在armbian终端下播放音乐
  14. POJ3737UmBasketella
  15. win10北通手柄没反应_最新北通阿修罗手柄驱动win10下载地址电脑版-CC软件
  16. tiktok运营学习怎么样
  17. 星方案|StarFS文件系统支持海量视频媒体业务存储
  18. 项目选择与评估及后评价
  19. 武汉天喻信息 移动安全领域 SE(Secure Element)
  20. 解决java配置文件存储汉字乱码问题

热门文章

  1. @j1 bootstrap
  2. ES6知识整理(2)--变量的解构赋值
  3. 新建Scrapy项目
  4. 搭建Hexo博客并部署到Github
  5. 【转】如何有效地记忆与学习
  6. [转]VC 键盘虚拟码
  7. mac 压缩png图片资源 pngcrush命令
  8. CF960G Bandit Blues 分治+NTT(第一类斯特林数)
  9. Anacond win10安装与介绍
  10. linux 英汉词典程序shell+postgresql版