22/10/24 查漏补缺

(C99) 布尔类型

  • C99标准添加了_Bool类型,用于表示布尔值.

  • _Bool类型实际上也是一种整数类型,但原则上他只占据1位存储空间.

  • 使用它需要引入 stdbool.h

(C99) 可移植类型: stdint.hinttypes.h

<stdint.h> 定义了 int16_tuint32_tint64_t 等整型.

举个例子:

#include<stdio.h>
#include<inttypes.h>
#include<stdint.h>

int main(){
    int32_t me32; // me32是一个32位有符号的整型变量
    me32 = 11451419;
    printf("First, int32_t is a int: \n");
    printf("me32 = %d\n",me32);
    printf("Next, let's not make any assumptions. ");
    printf("Instead, use a \"macro\" from inttypes.h: \n");
    printf("me32 = %" PRId32 "\n",me32);
    return 0;
}

假如一个系统最低支持的整数类型是16位, int8_t 就会有问题. 这个时候可以使用 int_latest8_t, 虽然系统不支持8位, 但会把这个整数当做16位来实现.

(C99) 复数和虚数类型

C语言有三种复数类型:

  • float _Complex
  • double _Complex
  • long double _Complex

例如 float_Complex, 包含了两个float类型的值, 一个表示实部, 一个表示虚部.

C语言有三种虚数类型:

  • float _Imaginary
  • double _Imaginary
  • long double _Imaginary

如果包含 complex.h 头文件, 就可以使用 complex 代替 _Complex , 用 imaginary 代替 _Imaginary.

size_t 类型

sizeof() 返回了一个size_t类型, 因此如果我们尝试在 printf() 中用%d格式化输出就会报一个warning.

其实 size_t 就是 long unsigned int 或者 unsigned int 的别名. C99可以用 %zd 来输出 size_t, 如果不支持的话可以使用 %ld.

逗号运算符

逗号运算符扩展了for语句的灵活性.

for(表达式,表达式 ; 条件 ; 表达式,表达式){
    ...Code...
}...

continue, break, default, goto

  • continu: 跳过本次循环的剩余部分,进入下一轮循环.
  • break: 跳出整个循环.
  • default: 一般在switch中用,其他地方是不能用的. 只会在case匹配失败时运行.
  • goto: 可以直接跳到某个标签的位置继续运行. 应尽量避免使用goto语句.

缓冲区

  • 缓冲区分为两种:
    • 完全缓冲I/O: 缓冲区填满才刷新缓冲区.
      • 缓冲区大小取决于系统,一般为512字节和4096字节.
    • 行缓冲I/O: 出现换行符时刷新缓冲区.
  • ANSI C后标准输入默认都是缓冲的.

有空弄个文件方面的查漏补缺(其实文件啥都不会,再梳理一遍)

最后修改:2023 年 04 月 28 日
如果觉得我的文章对你有用,请随意赞赏