c语言表达式的相关问题

本文详细介绍了C语言中的表达式,包括常量、变量、函数、算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式等,并阐述了运算符的优先级和特殊操作如自增自减、位运算和位移运算。还提到了sizeof运算符和指针相关的运算符。

c语言表达式

常量、变量、函数是最简单的表达式,用运算符将表达式正确连接起来的式子也称为表达式。
表达式由运算符和运算对象(操作数)组成有意义的运算式子,它的值和类型由参加运算的运算符和运算对象决定,其中运算符就是具有运算功能的符号,运算对象指常量、变量和函数表达式。
分类;算术表达式、赋值表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式等。

  • 算术表达式:单目表达式和双目表达式。单目需要一个操作数,而双目需要两个。
    单目:++自增 --自减 +正值 -负值
    双目:+加 -减 *乘 /除
    注:在这里对自增和自减进行特别说明。
    ++n和n++都相当于n=n+1;
    ++n运算顺序:先执行n=n+1,再讲n的值作为表达式++n的值;
    n++运算顺序:先把n的值作为表达式n++的值,再执行n=n+1.

  • 赋值表达式:赋值运算符=的左边必须是一个变量,作用是把一个表达式的值赋给一个变量。注意必须是右边值赋予左边。
    注:当赋值运算符两侧数据类型不同时,系统首先将赋值运算符右侧表达式的类型自动转换成赋值运算符左侧变量的的类型,再给变量赋值,最后把变量的类型作为赋值表达式的类型。
    复合运算符:
    += 加赋值 等价于x=x+exp
    -=……
    *=……
    /=……
    %=……
    (exp代表达式)

  • 关系表达式
    < 小于 >大于
    <=小于或等于
    == 等于
    !=不等于
    关系表达式将两个表达式连接起来,关系表达式的值反映了关系运算的结果(比较),它是一个逻辑量,取真(1)或者假(0),类型为整型。

  • 逻辑表达式
    !逻辑非
    && 逻辑与
    || 逻辑或
    与关系运算表达式相同,结果变量取真或者假。与关系表达式不相同的是,逻辑表达式连接的是两个不同的关系表达式。

  • 条件表达式
    一般形式:表达式1?表达式2:表达式3
    解释:先计算表达式1的值,如果它的值为非0(真),将表达式2的值作为条件表达式的值,否则,将表达式3的值作为条件表达式的值。
    eg:(n>0)?2.9:1等价于n>0?2.9:1
    a>b?a:c>d?c:d等价于a>b?a:(c>d?c:d)
    表达式的优先顺序:逻辑!——算术(单目>双目)——关系——逻辑——条件——赋值——逗号

  • 逗号表达式
    形式:表达式1,表达式2,……,表达式n
    先计算表达式1的值,然后计算表达式2的值,……最后计算表达式n的值,并将表达式n的值作为逗号表达式的值,将表达式n的类型作为逗号表达式的类型。通常运用在for循环语句中。

  • 位运算
    & 按位与
    | 按位或
    ^ 按位异或
    ~取反(按照各个位置上的数取反,1变成0,0变成1)
    << 左移
    》》 右移

    除了—是单目运算外,其他均为二目运算
    位运算符所操作的的操作数只能是整型或者字符型的数据以及它们的变体
    操作数的移位运算不改变原操作数的值。
    移位运算:a>>b表示将a的二进制右移b位,a<<b表示将a的二进制左移b位,要求a,b都是整型,b只能是整数,且不能超过机器字表示的二进制位数。
    循环移位:移入的位=移出的位
    逻辑移位:移除的位丢失,移入的的位取0
    算术移位(带符号):移出的位丢失,移出的位丢失,左移入的位取0,右移入位取符号位,即最高位代表数据符号,保持不变。
    eg:假设a=58=00111010
    a<<2=11101000=232=58*4
    操作数不改变原来的值。

  • 长度运算符
    sizeof 单目运算符,用来返回变量和数据类型的字节长度,使用长度运算符可以增强程序的可移植性,使之不受计算机数据类型长度的限制。
    ()括号运算符:改变运算顺序
    [ ]:用来表示数组元素
    *和&:与指针运算有关
    ->和.:用来表示结构分量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值