Xiyou linux 2019面试题知识点

1.unsigned int 与 int
unsigned int
(1)32位,无符号整型的取值是32个0到32个1,即:0~4294967295
(2) 我们举个例子:32位有点长,所以我们拿16位的unsigned short int 来举例。
short int 是16位的,无符号的范围是0~65535
拿十进制的32767来说,它的二进制为:
0111 1111 1111 1111
对于无符号的整型32767来说,它的二进制的最高位称为数据位,如果我们把0改成1,即16个1,它的十进制就是65535。
int
(1)有符号整型也是32位。
(2 )它的范围是-2147483648~2147483647。
拿16位的short int 来举例
short int 是16位的,有符号的范围是-32768~32767
还是以32767为例子,它的二进制为:
0111 1111 1111 1111
对于有符号整型32767来说,它的二进制最高位称为符号位,就是决定正负号的,
规则:0是正,1为负。

static
static int i=3;
下次使用i时,用i上次的结果;

printf()
printf()的返回值是打印出的符号的个数;
printf("%d\n",printf(“Xiyou Linux Group2%d”,printf("")));
第一步:第三个printf什么也没有打印,即返回值为0;
第二步:第二个printf打印Xiyou Linux Group20,长度为19,即返回值为19;
第三部:第一个printf打印出第二个printf的返回值19;
结果:Xiyou Linux Group2019;

|与&
|是按位或,&是按位与,通过补码形式运算,结果也为补码形式;

malloc 申请空间
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* p=(char*)malloc(sizeof(char)*20);
char * q;
q=p;
scanf("%s %s",p,q);
printf("%s %s\n",p,q);
}
:p 与 q 都是一个指针,指向的元素类型是 char 类型, p 指向在堆上动态开辟的20个 char 类型的空间,将 p 赋值给 q 。这样,p 和 q 都是指向那块动态开辟的空间,指向的为同一块内存空间。

在输入数据时,首先输入 Xiyou,这时 p 所指向的空间存储的数据就为 Xiyou 。由于 q 与 p 指向同一块空间,q 此时指向的也是 Xiyou 。 这时又给 q 赋值,将 Linux输入给 q 。q = p ,Linux 这时就将 Xiyou给覆盖掉了。所以这个程序的输出结果为 Linux Linux.
   
a+1,&a+1   
a+1:就是数组首地址加上一个元素所占的地址大小,这里int是4个字节,所以加上1x4.
&a+1:nn代表的是加上整个数组的大小,这里数组尺寸是4,所以+1代表的是地址加上4*4.

大小端
大端模式 数据的高字节保存在的低地址中,而数据的低字节保存在内存的高地址中。地址由小向大增加,而数据从高位往低位放;这和我们的阅读习惯一致。
小端模式,数据的
高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中
,这种存储模式将地址的高低和数据位权有效地结合起来,高地址部分权值高,低地址部分权值低。
在这里插入图片描述
检测大小端

#include<stdio.h>

int check_sys()
{
    
    
    int num = 1;
    if (*(char *)&num == 1)
    {
    
    
        return 1;
    }
    else
    {
    
    
        return 0;
    }
}

int main()
{
    
    
    if (check_sys() == 1)
    {
    
    
        printf("您的机器是小端字节序\n");
    }
    else
    {
    
    
        printf("您的机器是大端字节序\n");
    }
    system("pause");
    return 0;
}

`

猜你喜欢

转载自blog.csdn.net/weixin_45511599/article/details/104274716
今日推荐