美文网首页
C语言之数据类型与运算符

C语言之数据类型与运算符

作者: Subtle_emo | 来源:发表于2020-03-07 16:24 被阅读0次

    总结用于复习C语言,主要是根据浙大翁恺老师的慕课总结的

    数据类型:

    1、整数:
    char、short、int、long、long long
    2、浮点数:
    float、double、long double
    3、逻辑:
    bool
    4、指针
    5、自定义类型
    前面四种是基础类型

    大小:

    可以通过 sizeof() 来判断(sizeof() 不会对括号中的表达式进行计算,sizeof是静态运算符,结果在编译时就决定了)
    下面是在我的机器上运行检查各种数据类型大小的结果:
    sizeof(char)=1
    sizeof(int)=4
    sizeof(short)=2
    sizeof(long)=8
    sizeof(float)=4
    sizeof(double)=8
    sizeof(long double)=16

    整型讲解:

    计算机内部整型主要是补码运算
    一般情况 int 表达的就是机器寄存器的字长
    类型选择:现代计算机,若没有特殊要求整型就选int

    浮点数讲解:

    要点:
    1、并不是所有的浮点数都可以计算机被表示出来
    所以两个浮点数直接判断相等是可能失败的:
    f1 == f2 可能失败
    应该使用差来判断两个浮点数是否相等:
    fabs(f1-f2)<1e-8
    2、格式化输出浮点数:
    %.3f,保留小数点后3位(会四舍五入)
    %e,科学计数法输出
    3、浮点数的选择:没有特殊需要就选double

    字符类型讲解

    要点:
    1、char 也是一种整数,所以两个字符也可以相减,比如:'Z'-'A'得到25(码距)
    2、输入输出字符用 %c,也可以以%d输出,对应以ASCII码表
    3、转义字符

    类型转换:

    自动类型转换:

    当运算符两边出现不一致类型时,自动转换成较大的类型
    char -> short -> int -> long -> long long
    int -> float -> double
    printf ,任何小于int的类型会转成int;float会转成double
    scanf不会,要输入short,需要%hd

    强制类型转换:

    格式:(类型)值
    如:(int)10.2
    注意,可能会转换后数值可能会改变成你不认识的,如int32768转成char是0;而转成short会变成 -32768
    他做的只是截取,然后辨认输出,不会改变那个量

    逻辑类型讲解:

    要点:
    1、要 #include <stdbool.h> 引入这个头文件之后,就可以使用bool和true、false
    2、C语言的bool类型实际上也是一个整型,没有一种特殊的格式化让printf输出true或false比如:
    bool b = 6>5;
    printf("%d\n",b); //输出1
    b = 2; //编译可以通过

    运算符:

    逻辑运算:

    !:逻辑非
    &&:逻辑与
    ||:逻辑或
    例子:
    c>='A'&&c<='Z' //判断c是否是大写字母
    优先级:
    !> && > ||
    注意点:
    &&和||有短路的特性,这个有利于程序快速判断出结果,但是如果后面的表达式含有赋值操作,那么这个操作也不会做了
    如:a == 6 && a++==7
    如果前面a==6为假,后面不会执行,a也不会+1,所以不要吧赋值组合进逻辑表达式

    条件运算符: ... ? ... : ...

    例: m<n ? x : a+5 //如果m<n为真,表达式值为x,否则值为a+5
    注意点:不要使用嵌套的条件表达式,否则程序可读性太差

    逗号运算符:连接两个表达式,用右边的表达式的值作为整个表达式的值

    表达式1 , 表达式2
    计算过程是:先算表达式1,再算2,整个表达式的值是2的值
    没有特别多的用处主要是用在for语句中
    要注意:C中逗号运算符的优先级最低

    相关文章

      网友评论

          本文标题:C语言之数据类型与运算符

          本文链接:https://www.haomeiwen.com/subject/boeqdhtx.html