C++ 零碎

本文解析了C++面试中常见的几类问题,包括变量赋值、浮点数比较及宏与函数的区别。通过实例展示了变量赋值过程中的注意事项,解释了为何使用特定的方法来判断浮点数是否为零,并讨论了含参数宏与函数各自的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. i=8的值为8,如下联想面试题

int i=(j=4,k=8,l=16,m=32); printf("%d", i); //输出为32

在g++测试中

if(i=0)false

if(i=9)true


2.写出float x 与“零值”比较的if语句。

答 、if(x>0.000001&&x<-0.000001)

这道题完全看不懂。x为0值是什么?

float x=0;吗?

if(x==0) g++测试也能成功比较啊!


3.

含参数的宏与函数的优缺点。

含参数的宏优点:

省去了函数调用的开销,运行效率高.

含参数的缺点:

由于宏本质上是字符串的替换,所有可能会由于一些参数的副作用导致得出

错误的结果.

如:

#define max(a, b)   ( ((a) > (b)) ? (a) : (b) )

如果程序中出现这样的调用: max(a++, b);

将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题.

另外,如果程序中有多次宏替换的话,可能导致代码体积变大.

函数的优点是:

没有带参数宏可能导致的副作用,计算的正确性较宏更有保证.

函数调用的缺点:

函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有宏函数高.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值