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