本章相对而言较为基础,故只收录不熟悉的内容。

1 整型数据

1.1 整型变量

整型变量的基本类型符是 int 。在 int 的前面可以增加两类修饰符:

  • 控制变量是否有符号: signed(有符号)unsigned(无符号) 。如无声明,默认为signed(有符号)
  • 控制变量的值域范围: shortlong 。可直接使用,省略 int
  • 注意,当使用 unsigned 修饰时,变量所对应的内存表示形式的最高位不是符号位,而是数据位,参与数值计算,因此当为非负数

    1.2 整型常量

  • [-32768,32767],C语言认为它是 int 型常量。[-2147483648,2147483647],C语言认为它是 long 型常量。

  • 整型常量后加字母 l或L ,认为它是 long int 型常量。
  • 无符号数可用后缀表示,整型常数的无符号数的后缀为 U或u

    2 实型数据

    2.1 实型常量

    实型也称浮点型,故实型常量也称实数或浮点数。在C语言中,实数只采用十进制。它有两种形式:

  • 十进制小数形式:如0.0,5.789,-267.830等。

  • 十进制指数形式:一般形式为 a E n 。a为十进制数,n为十进制整数,其含义为a x 10``n

    2.2 实型变量

    实型变量有三类:单精度实型(float)、双精度实型(double)和长双精度实型(long double)。

  • long float 实际上就是 double ,因此没有 long float 类型。

  • 所有的实型常量按照 double 类型处理。 | 类型 | 精确表示的数字个数 | | —- | —- | | float | 7~8 | | double | 16~17 | | long double | 17~18 |

运行结果: a=123.456787,b=123.456787,c=123.456789

为什么0xffffffff是-1?(计算机对整型的存储)

3 运算符

3.1 自增自减运算符

例:
int p, i=2;
p=++i+(++i);
执行后: p=8, i=4
Tip:自增自减优先于+,所以相当于i先自增两次变成4,p=4+4=8。
将上式改为下列写法后,

  • p=++i+++i; 错误
  • p=++i+ ++i; 正确
  • p=++i-++i; 正确
  • p=++i+--i; 正确

3.2 移位运算符

3.2.1 左移运算(<<)

a<<b ,将a所对应的二进制数左移b位。溢出的最高位被丢掉,空出的低位用0填补。如 int a=3; a<<2; ,表达式的值为12。
右移运算(>>)同理。

  • 移位运算符两边必须都是整型数,否则非法。

3.3 sizeof运算符、复合赋值运算符

3.3.1 sizeof

C语言中提供了一个能获取变量和数据类型所占内存大小(字节数)的运算符,其使用格式为:
sizeof 表达式sizeof (数据类型名或表达式)

3.4 运算符的优先级

优先级 运算符












()
~、++、—、-、sizeof
*、/、%
+、-
<<、>>
&
^
|
=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=

在C语言操作中,如果遇到无符号数与有符号数之间的操作,编译器会自动转化为无符号数来处理。