C++的选择题,实在是搞不清楚,基础比较差,编程高手求救!

2025-05-24 00:23:07
推荐回答(1个)
回答1:

D,D,C ,D, B,
1:unsigned short和short占的字节相等,但是前者是无符号整数,表示范围在0~65535,后者在-32767 ~32768,由于a在内存中存储方式就是32个1,(unsigned short 占4个字节),现在把a的值赋给b,此时b的32位也全是1,但是b是有符号整数,所以输出b的时候视为将其视为负数,于是cpu就会对b的非符号的位字节进行“取反+1”,于是b就变成了最高位和最低位为1的数,最高位的1表示负数,最低位是1,其他位是0,因此结果是-1.

2:*p++和*(p++)效果一样,先打印*p,然后进行p++的操作。
(*p)++的操作是先找到*p,然后进行*p的++操作。虽然说在c语言中++的优先级高于*,但是这里是个例外。

3:A选项中a表示一个地址,不可赋值,B选项在于a[10]是个字符,不能用字符串的方式赋值,C正确,D中*p就是a的字符串数组的首地址,但它是字符,不能用字符串方式赋值。

4:实参与形参的结合是从左至右顺序进行的。因此指定默认值的参数必须放在形参表列中的最右端,否则出错。

5:定义语句定义了一个结构体,后面的v1表示新建一个结构体,其名称为v1,A选项错在point是这个结构体名称,而不是实例。C定义错误,D也是定义错误,只有C对。