C语言从入门到实战(二):数据类型

参考

提示: 查看 GCC 默认编译标准:输入gcc --version获得版本号 > 打开 GCC Releases > 点击对应版本 > 点击documentation > 点击第一个GCC X.X Manual > Ctrl + F搜索C Dialect点击进入 > Ctrl + F搜索default for C code

环境

  • 操作系统:Arch Linux 64位
  • 编译标准:C17

基本数据类型

  • 字符型(char)

    1
    2
    
    char a = 'a';
    printf("a = %c",a);
    
  • 整数型(int)

    1
    2
    3
    
    int a = 1;
    int b = 2;
    printf("a + b = %d",a + b);
    
  • 长整形(long)

    1
    2
    
    long a = 2147483648L;
    printf("int.MAX + 1 = %ld",a);
    
  • 布尔型(bool)

    在 C90 及以前,并不支持 bool 类型,需要使用宏定义

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    
    #include <stdio.h>
    #define bool int
    #define true 1
    #define false 0
    
    int main() {
      bool flag1 = true;
      bool flag2 = false;
      printf("flag1 is: %d\n",flag1);
      printf("flag2 is: %d\n",flag2);
      return 0;
    }
    

    在 C99 及以后,支持引入 stdbool.h 文件头来使用bool true false

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    
    #include <stdio.h>
    #include <stdbool.h>
    
    int main() {
      bool flag1 = true;
      bool flag2 = false;
      printf("flag1 is: %d\n",flag1);
      printf("flag2 is: %d\n",flag2);
      return 0;
    }
    

派生类型

  • 指针类型

TODO: C 语言指针

1
2
3
4
char a = 'a';
char* p =  &a;
printf("变量 a 的地址:%p",p);
printf("指针变量 p 的值:%c",*p);
  • 文件指针类型

TODO: 文件的访问模式

1
2
3
4
5
6
...
char str[] = "Hey Alice";
FILE *file = fopen("/tmp/kv.dat","wb"); 
fwrite(str, sizeof(char),sizeof(str),file);
fclose(file); // 不要忘了关闭文件流
...
1
2
$ xxd /tmp/kv.dat
00000000: 4865 7920 416c 6963 6500    Hey Alice.

复杂数据类型

后记

不得不说这一篇挖的坑太多了,慢慢填吧2333