牛客刷题——part4

牛客刷题

  1. 有以下程序,程序运行后的输出结果是©
#include<iostream>
#include<stdio.h>
using namespace std;
int main(){
   
int m=0123, n = 123;
printf("%o %o\n", m, n);
return 0;
}

A 0123 0173
B 0123 173
C 123 173
D 173 173

题中格式化输出printf中使用了%o也就是要求进行8进制打印,8进制数字表示的形式的特征为数字以0开头,也就是说m是8进制数字而n是十进制数字。因此这里的m以8进制输出为123,而n需要进行进制转换将10进制数字转换为8进制,转换结果为173,因此选择C

  1. 以下哪个选项一定可以将flag的第二个bit置0(A)
    A flag&=~2
    B flag|=2
    C flag^=2
    D flag>>=2

题中的4个选项都是进行位运算。
按位或:只要有一个比特位为1则为1
按位与:只有两个比特位都为1才为1,否则为0
按位异或:两个比特位数字不同即一个为1一个为0才为1,否则都为0.
A:flag&=~2 这里先将2取反则1111 1101再将其与上flag,因此第二个比特位被置0
B选项使用flag或上2,只能将第二个比特位置为1,不能置0。
C选项将flag与2进行异或运算,异或置为0只有当flag的第二个比特位也为1时,才会是0,并且还会改变其他位的值。
D右移运算符将flag比特位右移两位,并没有置0的功能,因此选A

  1. 请声明一个指针,其所指向的内存地址不能改变,但内存中的值可以被改变。(B)
    A const int const *x = &y;
    B int * const x = &y;
    C const int *x = &y;
    D int const *x = &y;
    E const int * const x = &y;

题中要求指针指向的内存地址不能改变,内存的值可以改变,这就是要求该指针为指针常量。根据指针常量的特点,const修饰符应该在*的右边,因此选B

  1. 以下C语言指令:
int a[5] = {
   
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值