美文网首页
《C陷阱与缺陷》读书笔记

《C陷阱与缺陷》读书笔记

作者: Nemocdz | 来源:发表于2017-07-13 01:28 被阅读36次
    多字符记号
    • 输入流到给定字符串,识别成记号后,会尽可能包含之后字符构成最长字符串作为记号
    • 组合赋值运算符是两个记号,如+=
    单引号与双引号
    • 单引号是当中字符对照整数序列的值
    • 双引号是初始化一个无名数组指针包括挡住字符和一个附近二进制为0的字符
    printf("Hello world\n");
    //等价于
    char hello[] = { 'H', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd', '\n', 0 };
    printf(hello);
    
    声明

    变量声明=类型+对该类型求值的表达式

    类型的模型=变量声明去除变量名和分号后用括号括起来

    float *a();
    //a是一个返回float指针的函数,模型为
    (float *())
    
    //调用地址0的函数
    //调用变量
    (*a)();
    //a为返回void的函数的指针
    void (*b)();
    //模型为
    (void (*)())
    //将0转为此类型
    (void(*)())0;
    //调用转换后的变量
    (*(void(*)())0)();
    
    函数调用

    需要参数列表,可无参数

    f();//函数调用
    f;//函数地址求值,不调用
    
    表达式求值顺序
    • &&和||先求左边,左边为真才求右边
    • a?b:c b和c只求其中一个
    函数参数转换

    规则

    1. 比int短的整型转换为int
    2. 比double短的浮点转换为double
    3. 其余不转换
    指针非数组

    char指针变量是指向其数组第0个元素的指针

    除法
    q = a / b;
    r = a % b;
    

    保证

    • q * b + r == a
    • 绝对值r<绝对值b
    • 当a >=0且b > 0时,r >= 0

    不一定保证

    • a为负数,q也为负
    • r >= 0

    相关文章

      网友评论

          本文标题:《C陷阱与缺陷》读书笔记

          本文链接:https://www.haomeiwen.com/subject/hkwihxtx.html