C++常见错误-总结4

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值