qidao123.com技术社区-IT企服评测·应用市场

标题: 学嵌入式C语言,看这一篇就够了(5) [打印本页]

作者: 万万哇    时间: 2025-3-16 20:29
标题: 学嵌入式C语言,看这一篇就够了(5)

C语言的运算符

学习编程语言,应该遵循“字-->词-->句-->段--->章”,对于一条故意义的语句而言,是离不开标点符号的

运算符指明要举行的运算和操纵,操纵数是指运算符的操纵对象,根据运算符操纵数的数目差别,C语言尺度把运算符分为三种:单目运算符(一元运算符)、双目运算符(二元运算符)、三目运算符(三元运算符)
C语言运算符优先级具体列表




(1)算术运算符

C语言中提供了7种算术运算符,分别是
+-*/%++--++和--都属于单目运算符,使用的时候比较特殊,其他五种都属于双目运算符
加法运算符+和减法运算符-一般没有特别需要注意的,作为双目运算符,需要两个操纵对象,但是有时候 - 也会作为负号使用就变为单目运算符,使用规则发生变化
*和/是作为乘法运算符和除法运算符,属于双目运算符,但是除法运算符的使用规则有些差别
当除法运算符两头的操纵数都是整数的时候,得到的结果也是整数,当两个操纵数无法被整数,会舍弃小数,只保留整数
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int x = 'f';
  5.         printf("%c\n",'a'+(x-'a'+1));
  6. }
  7. A.g                B.h                C.i                D.j
复制代码
  1. 首先,int x = 'f'; 中,字符 'f' 的 ASCII 码值为 102。接着分析表达式 'a' + (x - 'a' + 1):
  2. 'a' 的 ASCII 码值为 97
  3. x - 'a' 即 102 - 97 = 5,再加 1 得到 6
  4. 最后 'a' + 6 即 97 + 6 = 103,对应字符 'g'
  5. 因此,程序输出结果为 g,正确答案是 A
复制代码

当除法运算符两头的操纵数不全是整数,比如此中一个操纵数是浮点数,则得到的结果也是浮点数,假如不指定精度,则默认是6位精度
C语言中提供%作为求余运算符,也可以称为取模运算符,C语言尺度中规定%符号两头的操纵数必须是整数
可以知道,C语言中的运算符是有优先级的,运算符的优先级指的是多个运算符出现在同一个表达式中,优先执行哪个运算符,可以知道算术运算符* / %的优先级是高于算术运算符+和-
  1. 当表达式中运算符优先级相同时,需通过结合性(左结合或右结合)确定运算顺序:
  2. 左结合:从左至右依次运算。例如算术运算符+、-,表达式a - b + c,先计算a - b,再用结果与c运算
  3. 右结合:从右至左依次运算。例如赋值运算符=,表达式a = b = c,先计算b = c,再将结果赋给a
复制代码
C语言中的运算符是有结合性的,运算符的结合性指的是多个优先级相同的运算符出现在同一个表达式中,优先执行哪个运算符
运算符的结合性分为两种:一种是左结合性,遵循先左后右原则,比如 a + b - c,相称于(a+b)-c,另一种是右结合性,遵循先右后左原则,比如双目运算符中的赋值运算符 = ,比如表达式a=b=c,相称于a=(b=c)
注意:C语言中的单目运算符和三目运算符都是遵循右结合性,固然也包罗双目运算符中的赋值运算符=,其他的运算符都遵循左结合性

C语言中提供了两个增量运算符++和--,属于单目运算符,只能在变量中使用,一般可以作为变量的后缀增量或者后缀减量,++和--也被称为自加运算符和自减运算符,注意:C语言尺度中规定++和--也可以作为变量的前缀增量和前缀减量。 作用是让变量的值自动加1或者减1。
a++        :在表达式中则表示先让变量a参与表达式运算,运算之后才会让变量a的值自加
++a :在表达式中则表示先让变量a的值自加,自加之后再参与表达式运算
  1. #include <stdio.h>
  2. int main()
  3. {
  4.         int a,b,c,d;
  5.         a = 10;
  6.         b = a++;
  7.         c = ++a;
  8.         d = 10*a++;
  9.         printf("b,c,d:%d,%d,%d",b,c,d);
  10.        
  11.         return 0;
  12. }
复制代码
  1. int main()
  2. {
  3.         int i=3;
  4.         int j;
  5.         j = sizeof(++i + i++);
  6.         printf("i=%d j=%d",i,j);
  7. }
  8. A.i=4 j=2                B.i=3 j=2                C.i=3 j=4                D.i=3 j=6
复制代码
  1. sizeof 特性:sizeof 是编译期确定结果的操作符,其操作数表达式不会实际执行。因此 ++i + ++i 不会执行,i 仍为初始值 3
  2. sizeof(int) 的结果:int 类型在多数系统中占 4 字节,故 j = sizeof(++i + ++i) 实际等价于 j = sizeof(int),即 j = 4
  3. 最终输出 i=3 j=4,对应选项 C
复制代码
注意sizeof在C语言中是一个操纵符,作用是盘算数据类型的巨细,结果以字节为单位,sizeof括号中的表达式是不会实现运算和处理的

另外,虽然sizeof运算符中的表达式不会被运算,但是假如sizeof表达式中出现多个数据类型的巨细盘算,这个时候会涉及到C语言根本数据类型的转换,转换的意思指的是将数据(变量、数值、表达式的结果等)从一种类型转换为另一种类型
一般程序中的数据类型转换分为两种环境:自动类型转换 or 强制类型转换。两者区别如下:
(2)位操纵运算符

C语言中提供了6种位操纵运算符,分别是  ~   &   ^   |    >,此中~属于单目运算符,其他五种都属于双目运算符。
~:按位取反,对于二进制数而言,0变为1,1变为0  ~ 1101_1110 = 0010_0001
&:按位与,对于二进制而言,当两个bit同时为1,则结果为1,假如bit存在0,结果为0
|:按位或,对于二进制而言,当两个bit同时为0,则结果为0,假如bit存在1,结果为1
^:按位异或,对于二进制而言,当两个bit相同,则结果为0,两个bit差别,则结果为1
> 3 -- 0000 1111
[code]int a= 3,b =6执行语句“int k= a^b




欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/) Powered by Discuz! X3.4