赞
踩
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。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。