• C标准库部分


    @TOC

    1、断言assert.h

    • 基本断言assert,类似java,稳定代码可通过内置宏开关去掉断言语句已减少一丢丢时间损失
    #define NDEBUG  //内置开关
    #include 
    int main() {
    assert(1==2);
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 静态断言static_assert
      支持异常信息自定义,但仅断言编译期间能判断的表达式即常量表达式,如果表达式有运行时才能确定值的变量会编译错误。静态断言不通过在IDE上就能即时看到错误,编译通过后的可执行代码会去掉静态断言部分。
    static_assert(sizeof(int) == 4, "仅支持64位机器");
    
    • 1

    2、字符ctype.h

    字符判断,大小转换等

    3、错误码errno.h

    4、int格式化输出格式常量inttypes.h

    PRI + 原始占位符 + 类型关键字/宽度的形式构成,如printf("YYY%"PRId8"XXX",222);

    5、运算符替代iso646.h

    if (x > 6 and x < 12)
    // 等同于
    if (x > 6 && x < 12)
    
    • 1
    • 2
    • 3

    6、各类型极值limits.h

    7、本地化默认值设置locale.h

    查询、设置数字格式、货币格式、字符集、日期和时间格式

    8、数学函数math.h

    9、信号signal.h

    提供了一些用于处理处理程序运行期间的异常的功能,如处理来源于外部的中断信号或程序执行期间出现的错误等事件,完成信号处理后还可以继续之前任务

    #include 
    #include 
    void handler(int sig) {
        printf("Handler called for signal %d\n", sig);
    }
    int main() {
    signal(SIGFPE,handler);
    int a=1/0;//主动被动抛出异常都可以触发上面声明的信号处理handler
    //raise(SIGFPE); 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    10、int类型别名stdint.h

    定义int别名如int32_t,及其转换和极值

    11、比较杂的stdlib.h

    包括部分数学计算、字符串数值转换、随机数、程序退出、运行环境OS操作、内存管理、搜索排序等

    11、 文件IO、控制台IO、缓冲区操作等stdio.h

    11、时间相关time.h

    12、字符串处理函数和内存操作函数string.h

    11、多字节字符wctype.h

    • ASCLL、Unicode、与UTF-8
      对于存储原ASCLL(0-127)码比较浪费空间,UTF-8是根据 Unicode编号(码点)的大小有关,如ASCLL还是只使用一个字节(U+0000 到 U+007F),编号大的使用的字节就多.
    • 对于非英语字符一般表示为unicode码,如果系统为UTF-8,可以使用汉字等,也可以局部utf-8 如char* s = u8"春天"
    char* s = "\u6625\u5929";
    printf("%s\n", s); // 春天
    
    • 1
    • 2
    • C 语言单字符Api如strtok()、strchr()、strspn()、toupper()、tolower()、isalpha()等应用于多字符不会得到正确结果(不同编码下相同字符所占字节不一定相同),出现了一套适用于多字符的宽字符Api 。“宽字符”,就是每个字符占用的字节数是固定的,要么是2个字节,要么是4个字节,它属于整数类型的别名,由当前实现决定,单字符也可以转为宽字符,wint_t wc = btowc('A'); int a=sizeof(wc);将占2或4个字节, 单/多字节字符与宽字符可互转。

    参考原文

  • 相关阅读:
    层叠、继承与盒模型
    【蓝桥2025备赛】容斥原理
    【C++】STL容器适配器栈和队列及优先队列&容器适配器
    无意发现的【TiDB缓存表】,竟能解决读写热点问题
    数据结构-难点突破(线索化二叉树与遍历 C++中序线索化二叉树,前序线索二叉树,后序线索二叉树)
    Python常用基础语法知识点大全合集,看完这一篇文章就够了
    Linux命令行及图形化窗口安装与切换
    基于SpringBoot的医院管理系统
    数据中台之数据分析
    解决Mac下pycharm不提示element.click()方法
  • 原文地址:https://blog.csdn.net/qq_39506978/article/details/126766337