c++函数(三)习题讲解

1.【单选题】

template < typename T1, typename T2 >

decltype(auto) ave(T1 &a,T2 &b)

{

        return a > b ? a : b;

}

int a { 100 };

float b {100 };

ave(a,b);

std::cout << typeid ( ave(a, b) ).name();

返回的是什么类型?

A float&         B int&         C float

解析:这道题答案选C。ave 函数传递了两个数据类型的参数,一个是 int 类型,一个是 float 类型,在进行运算的时候会发生类型转换,而 float 类型的优先级要大于 int 类型,所以返回的是 float 类型,那为什么不是引用类型呢?这是因为 进行类型转换之后,无法返回原来的值本身。所以选 C。

2.【单选题】

template< typename T1 >

decltype( auto ) ave(T1 &a,T2 &b)

{

        return a + 1;

}

int ave( int a)

{

        return a + 2;

}

ave ( 3 )=?

A 3         B 4         C 5

解析:这道题考查的是 当模板函数和 重载函数同时存在时,他俩的优先级的高低,重载函数的优先级大于模板函数,答案选C。

3.【单选题】

int ave( int a)

{

        static int count { 10 };

        return a + count++;

}
int main()

{

        int d = ave( 2 );

        int c = ave( 3 );

        c = ?

}

A 13         B 14         C 15

解析:这道题考察 静态变量。当执行 ave(2)后,count 的值为 11,c 的值为 3 + count++,count++ 是后置递增,所以 c 的值为 14,答案选B。        

4.【单选题】

int a { 100 };

#define _H_

#ifdef _H_

a++;

#endif

a++;

a = ?

A 100         B 101        C 102

解析:这道题考察预处理指令,#define _H_ 定义了一个 宏,#ifdef _H_判断宏存在,之后 执行 a++ ,之后又执行 a++ ,结果 a = 102,选C。

5.【单选题】

int a { 100 };

#define _H_

#ifdef _H_

a++;

#endif

#ifdef  _H_

#define _H_

a++;

#endif

a++;

a = ?

A 101         B 102        C 103

解析:这道题中第二个 #ifdef  _H_ 之后的代码没有执行,因为 _H_ 已经定义了,所以 a 加了 2 次,答案选B。        

6.【单选题】

以下那种函数调用约定支持不定量参数:

A _cdecl

B_stdcall

C _fastcall

解析:_cdecl :这种方式是由函数调用者负责清除栈中的函数参数,所以这种方式支持可变参数,比如printf就是使用__cdecl调用方式。_stdcall:由于这种方式要求被调用者自己平衡栈,所以不支持不定参数。_fastcall:由于使用了寄存器传递参数,它通常比 _cdecl 和 _stdcall 更快,但同样不支持可变数量的参数。综上所述选A。

7.【单选题】

以下那种函数调用约定速度最快:

A _cdecl

B_stdcall

C _fastcall

解析:这道题和上一道题差不多,所以选C。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值