老五讲c-第一堂

c语言 零碎知识点

  • Endian 指的是存储字节的顺序。
  • 两种常用的字节排序:Little-Endian和Big-Endian
Little-Endian
如果多字节的最低有效字节首先存储在最低的存储器地址处,那么硬件被称为小端。
例子:小端存储0x44332211
地址:---------- MEMORY BYTES ---------- 
   100:00 11 22 33 44 00 00 00 00 00 ...
Big-Endian
如果多字节的最高有效字节首先存储在最低的存储器地址处,那么硬件被称为大端。
例子:大端存储0x44332211
地址:---------- MEMORY BYTES ---------- 
   100:00 44 33 22 11 00 00 00 00 00 ...
多字节和单字节的区别
单字节数据不受Endianness的影响。(类似于大端)
如字符串'abcd',起始字符'a'存储在最低的内存位置。
例子:‘abcd’
地址:---------- MEMORY BYTES ---------- --- ASCII字符---
   100:00 61 62 63 64 00 00 00 00 00 ... .abcd ....
代码检测大小端
    int checkIsLittleEndian 
    {  
        int i = 0x12345678;  
        char *c = &i;  
        return ((c[0] == 0x78) && (c[1] == 0x56) && (c[2] == 0x34) && (c[3] == 0x12));  
    }  
几种不常用的打印
  • o:无符号8进制(octal)整数(不输出前缀0)

  • x/X:无符号16进制整数,x对应的是abcdef,X对应的是ABCDEF(不输出前缀0x)

        printf("0x%x 0x%X",123,123);输出0x7b 0x7B
    
  • e/E:科学计数法,使用指数(Exponent)表示浮点数

        printf("%e %E",0.000000123,0.000000123);
        输出 1.230000e-07     1.230000E-07
    
  • p:以16进制形式输出指针

        printf("%p","lvlv");输出:0x103e6f45d
    
基本数据类型在内存中的存储形式
  • 整数类型 在内存中以补码的形式存在,对于一个正整数来说,它的补码是它的原码本身;对于一个负数来说,它的补码是它的原码取反加1.

  • 浮点类型 在计算机中以二进制的形式存储

        例如:12.565
        整数部分:1100
        小数部分:0.565*2=1.130得小数点后第一位为1,0.13*2=0.26得小数点第二位为0,0.26*2=0.52得第三位为0;0.52*2=1.04得第四位为1,以此类推。
        
    
  • 字符型 把字符的相对应的ASCII放到存储单元中,而这些ASCII代码值在计算机中以二进制的形式存放的。

你可能感兴趣的:(老五讲c-第一堂)