c语言(二)运算符,表达式

图片内容转自菜鸟教程
http://www.runoob.com/cprogramming/c-operators.html

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号。C 语言内置了丰富的运算符,并提供了以下类型的运算符:

算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
杂项运算符

一、算术运算符
(一)基本算术运算符
加法运算符”+“:为双目运算符【如++为单目】,具有右结合性。
减法运算符“-”:双目运算符,亦可作负值运算符,此时为单目运算,具有左结合性。
乘法运算符“*”:双目运算,具有左结合性。
除法运算符“/”:双目运算,左结合性。【参与运算量均为整型时,结果也为整型,舍去小数;如果运算量中有一个是实型,则结果为双精度实型】

ex.
#include<stdio.h>
void main()
{
    printf("%f\n",3.0/4)
}
//结果为:0.750000

(二)运算的优先级
C语言中运算符的运算优先级共分为15级。1级最高,15级最低。表达式中优先级高的先进行运算;优先级相同时按运算符的结合性所规定的方向处理。
2.运算符的结合性:
C语言中运算符的结合性有:
左结合性(自左向右)
【表达式x-y+2:y先与“-”结合,执行x-y运算,再执行"+2"的运算】
右结合性
【表达式x=y=2:先执行y=2再执行x=(y=2)】
c算术运算符优先级
博客园,口诀具体描述

 ex.
 #include <stdio.h>
 main()
 {
     int a = 20;    
     int b = 10;
     int c = 15;
     int d = 5;
     int e;
     e = (a + b) * c / d;               
     printf("(a + b) * c / d 的值是 %d\n",  e );
                                              // ( 30 * 15 ) / 5,值为90
     e = ((a + b) * c) / d;    
     printf("((a + b) * c) / d 的值是 %d\n" ,  e );
                                              // ( 30 * 15 ) / 5,值为90
     e = (a + b) * (c / d);   
     printf("(a + b) * (c / d) 的值是 %d\n",  e );
                                              // (30) * (15/5),值为90
     e = a + (b * c) / d;     
     printf("a + (b * c) / d 的值是 %d\n" ,  e );
                                              // 20 + (150/5),值为50
     return 0;
 }

note.

 自增、自减运算符
 自增1、自减1运算符均为单目运算,都具有右结合性。
 ++:自增1
 --:自减1
 其他形式:
 ++i 自增1后再参与运算
 --i
 i++参与运算后再自增1
 i--
 
 ex.
 #include<stdio.h>
 void main()
 {
    int i=8;
    printf("%d\n",++i);
    printf("%d\n",--i);
}
/*将输出:
  i=9
  i=8*/

二、关系运算符

来自菜鸟教程三、逻辑运算符
在这里插入图片描述四、位运算符
在这里插入图片描述在这里插入图片描述在这里插入图片描述五、赋值运算符和赋值表达式
在这里插入图片描述
1.变量=表达式
2.功能时计算表达式的值再赋予左边的变量。具有右结合性。
如:a=b=c=5可理解为a=(b=(c=5))
3.类型转换
如果赋值运算符两边的数据类型不同,系统将自动进行类型转换,即把赋值号右边的类型转换为左边的类型。具体规定如下:
(1)实型赋予整型,舍去小数部分。
(2)整型赋予实型,数值不变,但将以浮点形式存放,即用0填充小数部分。
(3)字符型赋予整型,由于字符型为一个字节,而整型为四个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。而整型赋予字符型,只把低八位赋予字符量。
4.复合的赋值运算符
+= -= *= /= %= <<= >>= &= ^=
——有利于编译处理

六、杂项运算符

在这里插入图片描述

逗号运算符和逗号表达式
1.功能:把两个表达式连接起来组成一个表达式。
一般形式:表达式1,表达式2
2.求值过程时分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值。
ex.

void main()
{
    int a=2,b=4,c=6,x,y;
    y=(x=a+b,b+c);
    printf("y=%d,x=%d",y,x);     //输出:y=10,x=6
}

note.
(1)逗号表达式一般形式中的表达式1和表达式2也可以又是逗号表达式,如:
表达式1,(表达式2,表达式3);
形成了嵌套情形,因此可以把逗号表达式扩展为以下形式:
表达式1,表达式2,…表达式n;
整个逗号表达式的值等于表达式n的值。
(2)程序中使用逗号表达式,通常时要分别求逗号表达式内各表达式的值,并不一定要求整个逗号表达式的值。
并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是作为各变量之间的间隔符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值