C语言学习笔记(二)

C语言类型转换:

1. example:     

    int a;

    a = 3.2 + 3 / 4.0;     //先转换成double,得0.75

                //3.2 + 0.75 = 3.95

                //因为a是整数,最后的结果决定于a的类型(即等号左边的类型),结果为3。

2.隐式转换:

  a.运算转换——不同类型数据混合运算时;

  b.赋值转换——把一个值赋予类型不同的变量时;

  c.输出转换——输出时转换成指定的输出格式;

  d.函数调用——实参与形参类型不一致时转换。

  

    运算转换:

    (a)char, short   自动转换>int,

    (b)float            自动转换>double

  在参与数学运算时只有int和double两种类型。所有的数学函数名的返回值都是double类型。

3.

  example:

    double x = 3.4;

    (int)x;

  首先在内存栈中分配八个字节作为x的空间;在常量区中也有八个字节存储3.4;再在临时空间中分配四个字节,将"3"存入这四个字节中。强制类型转换得到所需类型的中间变量,原变量值不变。

4.       ++,--(后置):先使用后执行

  int a[10];

  int *p = a;

  m = *p++;   //==>m = *(p++);

 相当于m = *p;   p++;

   ++(后置)和*都处于同一个优先级,结合顺序是自右向左。

5.在C语言中"="赋值是一个运算符,也是有运算结果的,其运算结果与其左值是一样的。

  example:

    b = a = 2; 先计算a = 2,再将a = 2的运算符结果赋给b。

  example:

    int a;

    a = 10;

       这里存在运算转换,因为10是一个short类型的常量,而赋给a后转换成int类型。

6.",": 逗号运算符,它的值是最后一个表达式的值。

7. int main(): 正常返回是"0",出错返回非零值

8. I/O缓冲

  a.缓冲被写满

  b.文件被关闭时,缓冲——>磁盘

  c.flush()强制刷缓冲

  d.程序崩溃的时候,不会写到磁盘中去。

9.用最少的空间交换两个数据

  int a,b;          int a,b,temp;

  a = a + b;         temp = a;  

  b = a - b;     <==  a = b;

  a = a - b;          b = temp;

 用最少的空间,最快的方式交换两个数

  int a,b;

  a = a ^ b;

  b = a ^ b;

  a = a ^ b;

 因为两个相同的数'^'为零,如 a^a^b = b;  ==> 0^b = b;

10.

  int main()

  {

    int *p;                //这是不对的,p此时是一个空指针

    scanf("%d", p);      

  }

  

posted @ 2013-12-11 01:00  Cai00  阅读(401)  评论(25编辑  收藏  举报