计算机中的字节序及相关面试题
一、概述
字节序用来表示数据在内存中的排布方式,它分为两种:高字节序和低字节序,也被称为大小字节序。
对于一个int类型的变量n=0x12345678
,它在32位系统中占四个字节,假设这四个字节在内存中是0x00000001~0x00000004
,则它以低字节序和高字节序存储的形式为:
字节序用来表示数据在内存中的排布方式,它分为两种:高字节序和低字节序,也被称为大小字节序。
对于一个int类型的变量n=0x12345678
,它在32位系统中占四个字节,假设这四个字节在内存中是0x00000001~0x00000004
,则它以低字节序和高字节序存储的形式为:
YouCompleteMe(简称YCM)是一款vim的智能补全插件,支持
C/C++, Go, Python...
等多种代码类型补全。它强大的功能吸引了不少人的使用,但有无数人因为安装它“折腰”,因为它的安装过程确实很麻烦。
花了一个下午的时间,来回装了两次,终于算是勉强搞定。
首先假定你已经安装好了vim和对应的插件管理器:升级安装vim 8.0并添加vundle插件管理
要注意的是,vim编辑器要求编译的时候添加了python
支持。
根据测试,选择python2
支持会比python3
省事一些,因为后面安装cmake
的时候貌似只能使用python2
(具体是不是这样没有去深入研究,目前暂且按python2的来)。
先上一张效果图:
1.下载安装
项目首页:https://github.com/vim/vim
git clone https://github.com/vim/vim.git
cd vim/src
./configure --prefix=/usr/local/vim-8.0
make && make install
C++构造函数的调用顺序为:
全局变量默认是静态的,通过extern关键字声明后可以在多个文件中使用。
具体可参考:C++变量的声明、定义和extern关键字
header.h
#pragma once
extern int gCnt;
int f1();
int f2();
C++的分离编译机制允许程序拆分成多个文件来写,最常见的是在头文件中进行声明,源文件中进行定义,然后一起编译:
gcc a.h a.cpp -o a.o
声明使得函数或者变量被程序所知,定义负责创建与声明相关联的实体。变量只能被定义一次,但能多次声明。
逗号表达式时c语言提供一种特殊的运算符,优先级别最低,它将两个及其以上的式子联接起来,从左往右逐个计算表达式,整个表达式的值为最后一个表达式的值。
例如:
#include <iostream>
using namespace std;
int main() {
int a = (1 + 2, 2 + 3);
cout << a << endl;
a = (a * 5, a + 6);
return 0;
}
输出的结果为:
5
11
C++中,对于定义时没有指定初值的变量,将会被默认初始化,此时变量将被赋予“默认值”,默认值是具体是什么将由变量的类型和位置决定。
对于内置类型来说,它的默认值由定义的位置决定,定义于函数体外的变量(即全局变量)被初始化为0,定义于函数体内的局部变量将不被初始化,值是未定义的。
通常情况下,我们描述进程的状态主要有三种:
三者之间的转化过程:
状态说明:
为什么阻塞态到就绪态和运行态之间不能相互转化
进程处于阻塞态被唤醒时,不能直接就抢占到CPU执行,而是要等待系统调度后才能继续运行,所以必须先放到就绪态中。而处于就绪态的进程,是没有运行的,状态是不会变化的,所以不能直接变成阻塞态。
在大多数的操作系统描述中,进程可能还存在新建和终止的状态,他们之间的转态变化为:
linux系统中的进程可以分为以下几种状态:
可运行态
阻塞态
类模板是用来生成类的蓝图,声明的方法都和函数模板类似:
template <typename T>
class CTest
{
CTest();
~CTest();
};