10-8C/C++刷题

在这里插入图片描述
解析:1 << 5 1左移5位相当于1*2^5,即fun(21)结果是31。(左移一位相当于乘以2,右移一位相当于除以2)

在这里插入图片描述
解析:注意k为整型,那么print来的值依次为:
1.1000
2.500
3.2500
4.125
5.62
6.31
7.15
8.7
9.3(再执行下一句k=k/2,此时k=1,循环停止)
3、如下程序用于输出"Welcome to Huawei Test",请指出其中两处错误。

char * GetWelcome(void){
        char * pcWelcome;
       char * pcNewWelcome;
       pcWelcome="Welcome to HuaWei Test";
       pcNewWelcome=(char *)malloc(strlen(pcWelcome));   //1
       if(NULL==pcNewWelcome){
              return NULL;     //2
         }
         strcpy(pcNewWelcome,pcWelcome);   //3
         return pcWelcome;   //4
    }

解析:1初错误:pcNeWelcome=(char*)malloc(strlen(pcWelcome))中strlen()统计字符个数,不含结尾符‘\0’,分配内存时就会少一个字节,正确形式是pcNewWelcome=(char*)malloc(strlen(pcWelcome)*sizeof(char));
3处错误:strcpy函数的功能是把从src地址开始且含有‘\0’结束符的字符串复制到以dest开始的地址空间,但是在第一处进行动态分配内存的时候使用的是strlen而不是sizeof,这样就少了‘\0’结束符,不能正确进行复制操作。

在这里插入图片描述
解析: 构造函数不能重载运算符,构造函数函数名必须和类名相同,运算符重载的格式
为:返回值类型 operator(运算符) (参数)
在这里插入图片描述
解析: 逻辑与&&运算认为0为假,非0为真
程序运行结果为2,1
在这里插入图片描述
解析:int *p1=new int[10];该语句给指针p1分配内存,没有对针对指针初始化,int *p2=new int 10;该语句给指针p2分配内存并初始化指针。
6、汇编语言、C语言、VB可以完成编写一个C语言编译器
7、下面程序的运行结果是:

 #define N2
 #define M N+1
 #define NUM(M+1)*M/2
 main()
 {
    printf("%d\n",NUM);
    }

解析:define 宏定义只是简单的文本替换,(M+1)*M/2=(N+1+1)*N+1/2=(2+1+1)2+1/2=42+0=8
8、若有定义语句:int a=10;double b=3.14;则表达式‘A’+a+b值得类型是double
解析:链接:https://www.nowcoder.com/questionTerminal/460e40f8824244efaf73ae088724f5f3
来源:牛客网

  1. 在表达式中,char 和 short 类型的值,无论有符号还是无符号,都会自动转换成 int 或者 unsigned int(如果 short 的大小和 int 一样,unsigned short 的表示范围就大于 int,在这种情况下,unsigned short 被转换成 unsigned int)。因为它们被转换成表示范围更大的类型,故而把这种转换称为“升级(promotion)”。

  2. 按照从高到低的顺序给各种数据类型分等级,依次为:long double, double, float, unsigned long long, long long, unsigned long, long, unsigned int 和 int。这里有一个小小的例外,如果 long 和 int 大小相同,则 unsigned int 的等级应位于 long 之上。char 和 short 并没有出现于这个等级列表,是因为它们应该已经被升级成了 int 或者 unsigned int。

  3. 在任何涉及两种数据类型的操作中,它们之间等级较低的类型会被转换成等级较高的类型。
    char<short<int<float<double 不同类型运算结果类型向右靠齐
    9、设int x=1,y=1;表达式(!x||y–)的值是1
    解析:!x也就是!1=0,而y–为先调用后减减,表达式就是0||1 结果为1,y变为0
    在这里插入图片描述
    解析:答案选C
    A中选项关键字应该小写,D中有int而不是integer

猜你喜欢

转载自blog.csdn.net/Cystal_ll/article/details/82974709