C++常见错误-总结4

来源:互联网 发布:美工外包靠谱吗 编辑:程序博客网 时间:2024/06/10 11:19

1,函数fun的声明为int fun(int *p[4]),以下哪个变量可以作为fun的合法参数()
A,int a[4][4];
B,int **a;
C,int **a[4]
D,int (*a)[4];

首先,int *p[4] 即p指向一个数组,数组有四个整型指针。指针数组。

A,为二维数组,不符号
B,二级指针,也就是指针指向的内容还是存放的指针。符号
C,二级指针数组,数组的内容是二级指针。
D,数组指针,即a指向一个长度为4的整型数。

2 ,下面代码输出什么?

#include<stdio.h>int main( ){    unsigned int a = 6;    int b = -20;    (a + b > 6) ? printf(">6") : printf("<=6");    return 0;}

分析可得a+b的值与6的比较,决定了其输出。

而a,b的类型不一致,所以就设计隐式类型转换。C++中,运算涉及两种类型时,较小的类型将会被转换为较大的类型,换言之,表达力低的类型将会被转换成表达力高的类型。

各类型表达能力从低到高排列为
int(等价于signed int )-> unsigned int -> long(等价于signed long) ->unsigned long -> float -> double -> long double

b为首先转换为unsigned int 。即 0xFFFFFFDC 然后a为0x00000006
相加得到0xFFFFFFE3;大于6。故输出 > 6

0 0