多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

C语言中的运算符表达式

C语言中的运算符表达式 1.算术表达式1概念算术表达式是用运算符号将常量、变量以及数学函数连接起来的式子。2算术运算符又分双目运算符和单目运算符两种。每个运算符都要处理两个操作数即运算数操作数可以是常量、变量或者其他算数表达式操作数分别位于运算符的左右两边这里使用的是双目运算符。单目运算符分增量运算符和减量运算符其只需要一个操作数它可以位于运算符的任意一侧但是表达的含义不同。其算术运算符如下表1.1表1.1 算术运算符注1两个整数类型的数据做除法运算时结果只保留整数部分。如2/30。2只有整数类型才能进行取余运算其结果是两数整除后的余数。如9%22。3自增和自减运算符只适用于变量且变量可以位于运算符的任意一侧但各有不同的效果。例如int a1 2,a2 2; int b (a1)*2; //等价于a1 a1 1; b a1 * 2; int c (a2)*2; //等价于c a2 * 2;a2 a2 1;其结果为b 6,c 4。原因是a1表示在使用变量a1之前,a11,然后使用新值进行运算即先加1在使用而a2表示先试用a2的原值待使用完之后在进行a21,即先使用再加1。但是这三个语句执行完后a1和a2的值都为3。3算术运算符的优先级其优先级是指当一个表达式中出现不同的算术运算符时执行运算的优先次序。如表1.2列出了算术运算符的优先级。表1.2算术运算符的优先级在书写表达式时应注意1写表达式时若记不清其优先顺序可以通过括号改变优先级的次序。2在书写表达式时若表达式过长可以分为几个表达式来写。3在一个表达式中最好不要连续使用两个表达式如ab。这种会让人混淆应该是(a)b,还是a(b)。这种情况可以使用括号进行分组或者用空格符是空格符‘ ’而不是空隔符‘\0’。2.赋值表达式1强制类型转换在学习赋值表达式前先学习以下什么是强制类型转换。定义强制类型转换是指当一个表达式中出现的各种变量或者常量的数据类型不同时需要进行的数据类型转换casting conversation。无论在C语言中还是java语言中数据类型的转换都分为隐式类型转换和显示类型转换这两种形式。1隐式类型转换对于由双目运算中的算术运算符组成的表达式一般要求运算符两边的操作数类型一致如果不一致系统会自动转换为较高的类型即取值范围较大。隐式类型转换遵循的是精度不降低的标准即短型向长型转换低精度向高精度转换。其规则如下2)强制类型转换表达形式为data_typeexpressioon;例如int a4,b0; double c3.14; s a (int)c;可知c的类型为double,然而s是int类型将int放在c前面就是将c 的类型强制转换成int类型先将c中的数据截取小数部分让整数部分与a 进行加法运算故c3最后将7赋值给s。在整个转换过程中并没有改变c的类型以及取值可见显示类型的转换是暂时的。注强制类型转换有副作用避免其的方法如下1避免两个整数进行相除整数相除会导致相除结果的小数部分丢失。2在进行强制类型转换的过程中如想实现小数的四舍五入先给被转换的变量0.5然后再实施强制类型转换如(int)(x0.5)。2赋值表达式由赋值运算符组成的表达式称为赋值表达式。1赋值运算符“”——赋值运算符的作用是将赋值运算符右边的数据或者表达式的值赋给运算符左边的变量。注赋值号左边必须是变量。例如double s 6.5 33;//是将表达式6.533赋值给变量s.2)赋值中的类型转换在赋值表达式中如果两侧的数据类型不一致但赋值符左边的数据类型较高系统会自动进行隐式类型转换若赋值运算符左边的变量的数据类型低于右边表达式的类型就必须进行显示类型转换否则编译时会报错。3复合赋值运算符也就是在运算符“”前面加上其他的运算符构成复合赋值运算符。如表1.3表1.3 C语言中的复合赋值运算符复合赋值运算符举例等效于xyxxy-x-yxx-y*x*yxx*y/x/yxx/y%x%yxx%y3.关系表达式利用关系运算符连接起来的式子称为关系表达式。也就是我们所说的比较运算用于对两个表达式进行比较判断比较的结果是否满足给定的条件。C语言中提供了6个关系运算符如表1.4表1.4 关系运算符4.逻辑运算符C语言中提供了3中逻辑运算符如表1.5表1.5 逻辑运算符运算符0含义实例非!(a5),表示a不大于等于5即小于5与x0 x5,表示0≤x≤5||或x5 || x0,表示x≥5或者x≤0逻辑非运算符“”是一个一元运算符紧跟其后的表达式的值为0时它的运算结果为1否则运算结果为0逻辑与运算符“”是一个二元运算符它两边表达式的值均为1时整个逻辑运算的结果为1有一个为0时则整个运算结果为0即有0则0全1才为1逻辑或运算符“||”是一个二元运算符它两边表达式的值均为0时整个逻辑运算结果为0有一个1整个逻辑运算结果为1。即有1为1全0才为05.各类运算符的优先级关系从上图可以看出括号“”运算的优先级别最高赋值运算符的优先级别最低。表中上面未提及的指针运算符“*”在后面将指针的时候会细讲它的用法等以及取地址运算符“”都涉及指针那块知识sizeof()用于计算数据类型或对象在内存空间中所占用的字节数。表中的下表运算符“[]”用于访问数组元素或指针所指向的内存位置。成员运算符“-”用于通过指针访问结构体或联合体的成员“.”用于访问结构体或联合体变量的成员其用法将在后面学习相关知识时细讲。
返回列表