C语言 学习笔记 2021年10月29日

C语言 学习笔记 2021年10月29日,第1张

C语言 学习笔记 2021年10月29日

九、运算
    自变运算符:++/--   使变量的值自动+1或者-1
        前自变:++num --num     立即有效
        后自变:num++ num--     下一行语句生效
        注意:不要在一行内多少使用自变运算符
    在一个语句中对一个变量作超过一次的修改是未定义的行为,这不符合C语言规范。

    算数运算符:+ - * / %
        整数/整数   结果没有小数 5/2=2
        / % 除数不能为0     出现错误:浮点数列外(核心已转储)

    关系运算符:> < >= <= == !=
        比较结果必须是0或者1,比较结果还能继续参与运算
        int num = -5;
        if(1 < num <10)     永远为真,运算规则与数学不一样
        建议常量放左边

    逻辑运算符:&& || ! 
        会先把运算对象转换成逻辑值,0转换为假,非0转换为真
        A && B  一假即假
        A || B  一真即真
        !A      求反

        && || 具有短路特性:当左边的运算对象已经能够确定整个表达式的结果时,右边的所有运算对象不在计算

    三目运算符:运算对象有三个部分
        A ? B : C
        判断A的值是否为真,如果为真执行B,否则执行C
        该语句不能使用流程控制语句,因为它必须要有运算结果

    赋值运算符:= += -= *= /=
        a += b; a = a+b;
        a -= b; a = a-b;
        a *= b;
        a /= b;
        ...

    位运算符:& | ~ >> <<

        sizeof 也是运算符,但是sizeof括号内的表达式不会计算
类型转换
        只有相同类型的数据才能进行运算,不同类型的数据需要转换成相同类型后才能进行运算
        自动类型转换:(以不丢失数据为基础)
            1、字节少的向多的转
            2、有符号的向无符号的转
            3、整型向浮点型转
        注意:charshort 类型如果与charshort进行运算,编译器会进行类型提升,全部自动提升为signed int再进行运算
    强制类型转换:
        (转后的类型名)数据
            强转会有丢失数据的风险
    分支语句
        if(表达式)  //  单分支
        {
            //  表达式的值为真,执行此处代码
        }    
    
        if(表达式)  //  双分支
        {
            //  表达式的值为真,执行此处代码
        } 
        else
        {
            //  表达式的值为假,执行此处代码
        }


        if(表达式1)  //  多分支
        {
            //  表达式1的值为真,执行此处代码
        } 
        else if(表达式2)
        {
            //  表达式2的值为真,执行此处代码
        }
        else if(表达式3)
        {
            //  表达式3的值为真,执行此处代码
        }
        else
        {
            //  表达式的值都为假,执行此处代码
        }



        开关语句
        switch(n)   //n可以是数值、表达式,但结果必须是整数
        {
            case val1:  //val必须整常量
                ...     //当val 等于 n时则打开执行开关
                break;  //在语句结束后,使用break关闭执行开关
                    //switch 不能与continue配合
            case val2:
                ...
            default:    // 如果所有的case都没有匹配成功,则最后会打开default开关,而且可以在switch中的任何位置,都会最后执行
        }
        注意:
            如果是表示[n,m]范围可以是
            case n ... m:
            但是这是GNU编译器的特有语法,谨慎使用

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4950658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-13
下一篇 2022-11-13

发表评论

登录后才能评论

评论列表(0条)

保存