您的位置:首页 > 职场人生

面试遇到的问题汇总

2016-11-17 23:49 169 查看
一直更新

语言特性方面:

1.注意类型转换树的问题

如 a+b

如果a,b是不同的数据类型,一定要注意其中隐式的类型转换问题

char->int->unsigned->float

一定要注意 unsigned要比int高级,int和unsigned碰到一块的时候是一起转成unsigned的。

比如下面这个程序

for(int a=-1;a<sizeof(t)/sizeof(t[0]);a++){

cout<<t[a+1];

}

的问题

a是一个int,而sizeof是unsigned的,所以在比较大小的时候,都要将其转换为unsigned的,所以a会变成很大的树,所以这个循环根本进不去。

算术运算会先隐式转换到相同类型再运算,结果的类型是转换后的类型。PC机子上的类型转换树参考:
long double
|
double
|
float
|
unsigned long
/          \
unsigned int      long
\
int
/     |     \
bool, char, unsigned char, short, unsigned short, 枚举类型等


上面可以看到unsigned和int不在同一个树分支中,所以unsigned和int碰一起是一起转成unsigned long

所以 sizeof(a+b) a如果为a为unsigned,b为int的,这个sizeof之后是8!!!!!!!!!!!

2.智能指针的语法问题

3.const 和 #define 的区别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: