• C 阶段性总结


    知道写博客是一种很好的学习方式,但遗憾的是现在才真正下决心跟下去。不过也不算晚吧,“你觉得晚了的时候,恰恰是最早的时候。”

    现在就小小的总结下最近的学习内容吧,肯定不全,不过尽力而为吧。

     
    (1)C语言中所有的数据类型:

     
    C语言中的数据类型非常“整装”,基本类型、构造类型、指针类型和空类型,清晰明了。没有了C++那么多的类型。
     
    (2)常量VS变量:
    一个常量有N种表示方式:12(十进制),012(八进制),0x12(数字0和x代表了十六进制)是什么? 是12和10和18.
     
    \转义符号 例如:'\n' 、'\101' 只能算一个字符
     

    一个字符的多个表示方法:65D(十进制)=41H(十六进制)=101Q(八进制)
    字符A可以表示为‘A’ 、‘\x41(十六进制)’、65、0x41(十六进制)、0101(八进制)
     
    符号常量:
    #define 标示符 常量数据
    #define PI 3.14159
     
    宏应用非常广泛了,但是小心其中的种种陷阱!
     
    变量:
    “放药材的标有号码的盒子”。本质上就是代表了内存中的一块空间。C语言是强类型语言。C语言的数据类型被分配的存储空间(多少字节)依据系统和平台而定,不像java是跨平台的,即都是固定字节数目。

    (3)变量
     

    其实单双精度的区别就是占有内存空间越来越多,精度越来越高!
     

    声明变量和初始化的时候不能用连等。 int a=b=c=3;是错误的!

     
    (4)常量VS变量,变量究竟需要多少的内存空间。
     
    运算符和表达式:运算符其实是特定函数。
     
    运算符:
    算数运算符、关系运算符、逻辑运算符、赋值运算符(=)、按位运算符、其他运算符。
     
    3/5因为3和5都是整型,那么他们的运算结果也只能是整形,0.6这个数值不可能出现,所以只能得0(这与具体机器的取整方向有关吧)。
     
    ++ --自增 自减 结合性:自右向左! (一般是自左向右,例如+、-、*)
     
    eg:    i=2;
              j=-i++;
    ++,--,-,+是相同优先级,结合方向:自右向左!-i++等价于-(i++)。对于括号内的自增运算,又要先使用i,再使i增加1。
    所以j的值为-2,而i的值为3。
     
    如果自右向左的话:j=(-i)++;j还是-2而i还是3啊。??
     

     
    非0值就代表“真”,0值就代表假。0、0.0、\0(字符型)、NULL(指针型)

    结合性:  !:自右向左, &&和||:自左向右。
     
    在逻辑表达式的求解中,并不是所有的逻辑表达式都会被求值,只有必须得出逻辑表达式的值的时候才会继续去求解。
    a=0;b=1;c=2;
    d=a++&&b++&&--c;(++ --属于算术运算符)
    d=(a++)&&(b++)&&(--c);a的值为1,b的值为1,c的值为2。陷阱啊!b++和--c都没有被执行!
     
    x=(y=12)/4;y的值为12,x的值为3,表达式的值为3。
    (x=y)=12/4是错误的,因为第二个赋值运算符的左边不是一个变量,而是一个表达式啊。

    (5)
    运算符本质是内部函数。
    a*=b+c;等价于:a=a*(b+c);
     
    eg:     a=2;
             a+=a*=a;
    右结合性,a*=a先计算啊!a+=a*=a;a+=(a*=a);a+=a;(a的值为4)
    最后a的值为8。
     
               真       假
    exp1?exp2:exp3
     
    逻辑>条件>赋值。
     
    eg:a=5;b=3;
         --a==b++?a++:b++;
    --a得到4==3(b)吗,明显不等于,这时候执行第一个b++,b的值变为4,然后表达式的值为第三个表达式,也就是b的值,为4,然后执行第二个b++,b的值变为5,最后,a的值为的4,b的值为5,表达式的值为4。
     
    y = x>10?x/10:x>0?x:-x;自右向左,先计算右边。先计算x>0?x:-x。
     
     
    sizeof(类型名) 。sizeof是运算符!?!sizeof是运算符!?!
    获得整型 字节数!
     
    不存在从int到float的转换,int和float都会上升为double
    eg:

     
    int和float都直接提升为double了 。

     
    9-20:6-1
     
    C语言语句

     
    C语言本身不提供输入/输出语句
    这由标准I/O库提供的。printf和scanf并不是关键字。
     
    1、字符输入函数:
    int getchar(void);还记得标准模式和非标准模式吗,用termi....那个结构控制来着!
    从标准输入设备读入一个字符,返回该字符的ASCII码值,并且将敲入的字符“回显”在屏幕上。
    被包含于“#include <stdio.h>”
    注意!

    2、字符输出函数;
    int putchar(int);
    向标准输出设备(一般是显示器)输出一个字符,并返回输出字符的ASCII的码值。
    main()                                    
    {
         int a = 65;
         putchar(a);                          程序输出:ABBC
         char b = 'B';
         putchar(b);
         putchar('B'+1);
    }
     
    3、格式输出函数;
    int printf(char* format [,argument,...]);出错的话返回负数。
    printf("格式控制字符串",输出项列表); 是英文的双引号。
     
    %[flags0][width][.prcc][F|N|h|L][type]
     

     
    %加上:
     

     
    字符串的格式8.2的需要注意下
     

     
     
    注意:使用printf时候参数列表的求值顺序不同,根据编译器和系统不同而不同!
     
    4、格式输入函数;
    int scanf(char *format [,argument,...]);
    按规定格式从键盘输入若干任何类型的数据给argument所指的单元,返回读入并赋给argument的数据个数,遇到文件结束返回EOF,出错返回0。

     
  • 相关阅读:
    cuda npp库旋转图片
    Xml序列化 详解
    jsonp简介
    在centos7下安装.net core
    安装vs2017后造成无法打开xproj项目无法打开
    SqlServer 语法
    js自定义事件
    HttpWebResponse 解压gzip、deflate压缩
    centos7 安装.net core的方法
    帮助类-从tfs获取数据
  • 原文地址:https://www.cnblogs.com/unaestodo/p/2734574.html
Copyright © 2020-2023  润新知