7.1 整型

整型分为有符号和无符号,其中对于有符号来说,最左边的位标识正负,符号位为 0 表示正数或者 0,符号位为 1 表示负数。

默认情况下都是有符号的变量,需要使用无符号的变量则要声明 unsigned

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i=0;
  5. int j=1;
  6. printf("%d\n",i-j);
  7. }
  8. // 输出
  9. -1

更多的整型

image.png

这些整型前面的修饰符可以互换顺序,也可以缩写

  1. #include <stdio.h>
  2. int main()
  3. {
  4. short int i = 65535;
  5. printf("%d",i);
  6. }
  7. // 输出,因为已经超过了 short int 可以容纳的范围了
  8. -1

7.1.1 整型常量

八进制必须以 0 开头
017,0377,077777

十六进制必须以 0x 开头,且大小写无所谓
0xfF

计算时,甚至可以混用这些书写形式

7.1.2 读写整型

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 15;
  5. printf("有符号:%d\n",i);
  6. printf("无符号:%u\n",i);
  7. printf("八进制:%o\n",i);
  8. printf("十六进制:%x\n",i);
  9. }
  10. // 输出
  11. 有符号:15
  12. 无符号:15
  13. 八进制:17
  14. 十六进制:f

7.2 浮点型

7.3 字符型

利用库函数转换大小写

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. int main()
  4. {
  5. char ch = 'c';
  6. printf("%c",toupper(ch));
  7. return 0;
  8. }
  9. // 输出
  10. C

7.3.1 读写字符

  1. #include <stdio.h>
  2. #include <ctype.h>
  3. int main()
  4. {
  5. char ch;
  6. char ch2;
  7. scanf("%c",&ch);
  8. ch2 = getchar();
  9. printf("\n%c,%c",ch,ch2);
  10. }
  11. // 输入
  12. ab
  13. // 输出
  14. a,b

7.4 sizeof

用于确定类型的占用空间大小

  1. int main()
  2. {
  3. char ch;
  4. int i;
  5. float f;
  6. printf("%d\n",sizeof(ch));
  7. printf("%d\n",sizeof(i));
  8. printf("%d\n",sizeof(f));
  9. }
  10. // 输出
  11. 1
  12. 4
  13. 4

7.5 类型转换

类型转换分为隐式转换和显式转换

隐式转换是自动的,当低精度->高精度时,是可以自动进行的

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i = 10;
  5. float j;
  6. j=i;
  7. printf("%f",j);
  8. }
  9. // 输出
  10. 10.000000

显式转换(强制类型转换)
即强制把某种类型转换成另一种类型

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i;
  5. float j = 10.0;
  6. i=(int)j;
  7. printf("%d",i);
  8. }
  9. // 输出
  10. 10