面试遇到的问题汇总

    xiaoxiao2021-08-20  124

    一直更新

    语言特性方面:

    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 的区别

    转载请注明原文地址: https://ju.6miu.com/read-676753.html

    最新回复(0)