1. #include <>是编译预处理命令

  2. 同种类型在不同平台所占字节数不尽相同,要想准确计算某种数据类型所占内存空间字节数,必须使用sizeof运算符。

  3. 计算机的内存编址:内存中的存储单元是一个线性地址表,按字节进行编址,对于存储单元的每个字节都用唯一的一个整数字来标识,这个数字称为它的地址。

  4. 什么时候需要考虑字符变量是有符号的还是无符号的?

    1. 如果在变量中只存储7位的字符,那么不需要考虑,因为符号位将为0.但是如果计划存储8位字符,而且希望变量是unsigned char类型。
    2. 如果变量是char类型,编译器可坑选择把它看做有符号的字符,如果只作为字符使用就可以,但是如果要转换为整数,那么转换的结果将是负数,因为变量的符号位为1。(所以类型为char,存储8位字符,最好不要后来再转换为整数)
  5. 转义序列 \t 将会使得printf函数调到下一个横向制表符处停止

    #include <stdio.h>
    
    int main(){
    	printf("a\t b\n");
    	printf("cde\t fgh\n");
    	printf("ijkl\t mnop\n");
    	printf("qrstu\t vwxyz\n");
    } 

  6. 对于没有显示初始化的变量的初始值可以做怎样的假定?如果一个全局变量初始值为0它可否作为空指针或浮点0?

    1. 具有静态(static)生存期的未初始化变量(包括数组和结构)—即在函数外声明的变量和静态存储类型的变量可以确保初始值为零。

    2. 具有自动(automatic)生存期的变量(非静态存储类型的局部变量)如果没有显示初始化,则包含的是垃圾内容。

    3. 用malloc和realloc动态分配的内存也可能包含垃圾数据,必须正确初始化才行。

  7. 如何决定使用哪种数据类型?

    1. 如果可能用到很大的数值(大于32767或者小于-32767)就使用long型

    2. 如果空间很重要(有很大的数组或很多的结构)就使用short型

    3. 除此之外用int型

    4. 如果定义明确的移除特征很重要而负值无关,或者希望在操作二进制位和字节时避免符号扩展的问题。使用对应的unsigned型

    5. 尽管字符类型可以当成“小”整数使用,但这样做有时很麻烦,不值得。编译器需要生成额外的代码进行char和int之间的转换,导致目标代码量增大,而且不可预知的符号扩展也会带来一堆麻烦。

  8. 什么是整数溢出?超过整数的固定的最大值时,会导致溢出。编译器不能检查出溢出,所以导致存储了一个意想不到的错误值。一个经典的例子就是1996年阿丽亚娜火箭因浮点数转换成整数发生溢出而导致发射失败。

  9. 标识符的长度是否有限制?标识符的长度可以任意长,但是编译器只能记住前31个字符,因此如果两个名字的前31个字符都相同,那么编译器可能会无法区分它们。(总之,别担心太长,最好别太短,太短会重复)

  10. c语言没有提供标准的布尔类型,使用int可能更快,使用char可能更节省空间。

  11. 八进制由数字0开头。十六进制由数字0x开头

  12. 整型常量的表示方式

    1. int是有符号整数。无符号整数由常量值后跟U来表示,不能表示为小于0的数。

      1. 有符号整数和无符号整数的区别在于怎样解释整数的最高位。

      2. 无符号整数最高位被编译器解释为数据位。

      3. 有符号整数最高位解释为符号位,1时表示负数,0表示正数。

    2. 长整型后跟L。无符号长整型后跟LU。

  13. 十进制小数,必须有小数点。指数形式,用e来表示以10为底的指数,e的左边是有效数字–可以表示为小数或整数形式,e的右边是指数部分,必须是整数形式。

  14. 实型常量本身是双精度,后跟F是单精度,长双精度后跟L。

  15. 2-16进制转换:左向右四位一组,转十进制,拼起来就是十六进制。反之则是每一位16进制,展开为四位2进制。

  16. 2-8进制转换。同上,4位改三位。

  17. 10-R

    1. 整数部分:连续除R,倒取余数

    2. 小数部分:连续乘R,正取整数

  18. 为什么用二进制而不是我们熟悉的十进制来存储数据

    1. 二进制在电器元件中容易实现。0、1对应电路通、断。

    2. 二进制运算比十进制运算简单的多,有利于简化计算机内部结构提高运行速度。

  19. 为什么要在高级语言中引入数据类型的概念?

    1. 为了有效组织数据,规范数据使用,提高程序可读性,方便用户使用。

    2. 不用类型数据在内存中占用的存储单元大小不同、表示数据的取值范围不用、不同类型数据在内存中的存储形式不同,能参与的运算种类也不同。

  20. 数据结构是计算机存储、组织数据的方式,是指相互之间存在一种或多种特定关系的数据元素的集合。适合的数据结构可以带来更高的运行或者存储效率。

  21. 为什么计算机内存中负数用补码来表示?

    1. 采用补码便于将减法运算也转化为加法运算来处理。

    2. 采用补码表示便于用统一的形式来表示0,否则会出现”-0″ “+0”

  22. 变量名的命名规则是

    1. 不能出现汉字,符号里面只能出现下划线

    2. 数字不能做开头

    3. 不能用c的关键字(不用特意记,见多了就记得了)

    4. 长度不限,太长也没意思不是吗,分一分大小写就区分开了

  23. 字符在内存中以其对应的ASCII码的二进制形式存储。每个字符都有一个等价的数值型与其相对应,这个整型值就是该字符的ASCII码。一个字节保存一个字符,因此字符常数其实质就是一个普通整数。

  24. 字符型分为有符号和无符号两种类型。

    1. 无符号的ASCII码值在0到255.

    2. 有符号的在-128到127

    3. 普通char型,在使用时很少关心是有符号还是无符号。仅在用字符型变量存储一个单字节整数时,显式的声明是unsigned char还是signed char才有意义。

  25. 实数和整数在内存中的存储不同在哪?

    1. 在计算机中,一般用定点表示法表示整数,浮点表示法表示实数。

    2. 定点表示法位数是确定的,因此定点数的值域是有限的。实数和整数在内存中的存储方式截然不同。

    3. 因为计算机处理的实数的数值可能很大或很小,所以不能直接用定点数来存储。因此,对于实数,无论是小数表示形式还是指数表示形式,在计算机内都采用浮点形式来存储。

    4. 二进制数的浮点表示:由符号位、阶码和尾数3部分组成。(实数的小数部分称为尾数(正负均可),决定实数的精度。实数的指数部分,称为阶码,决定实数的范围)

  26. 计算机处理的一串数码称为一个字,存储一个字所需字节的长度称为字长。(也就是能处理的数码长度越长越好,数码长度长了自然存储需要的字节就多了,所以字长越长越好)

    1. 在计算机中,一串数码是作为一个整体来处理或运算的,称为一个计算机字。

    2. 在存储器中,通常每个单元存储一个字。计算机存储一个字所需的字节的长度,称为字长。

    3. 字节长度固定是8位,字长是不固定的。字长代表计算机进行一次整数运算所能处理的二进制数据的位数。

    4. 字长越长,计算机运算精度越高,处理速度越快,性能越好。

  27. 基本数据类型的取值范围

本文地址:https://blog.csdn.net/qq_42030496/article/details/107323163