C语言-----运算符、优先级 、类型转换

时间:2023-01-28 20:46:59


  • 1 运算符

  • 1.1算数运算符

运算符

名称
+ 加号运算符(双目)且正号运算符(单目)
 - 减号运算符(双目)且符号运算符(单目)
乘号运算符(双目)
除号运算符(双目)
求余运算符(双目)    例:5%2=1
++
自增运算符(单目)    例:2++   得到3
-- 自减运算符(单目)    例:2--      得到1


  • 1.2关系运算符

运算符

==
等号运算符(双目)  实例:A=1,B=1;A ==B;   返回一个真值。
!=
不等于运算符(双目)
> 大于运算符(双目) 
<
小于运算符(双目) 
>=
大于等于运算符(双目) 
<= 小于运算符(双目)

  • 1.3逻辑运算符

运算符
名称
&& 逻辑与运算(双目)  都真才真
||
逻辑或运算(双目)  都假才假
!
逻辑非运算(单目)  假为真,真为假。

  • 1.4位运算符

运算符
描述
&   () and 其存在于个操作到其结果。
|   ()
or   将其存在于任操作数的二进制位复制到其结果。
^  () 将其存在其中一个操作数但不同时数的二进制复制到其结果。
~  (单)
反转运算符,及把其二进制0变成1、1变成0。
<< (单) 二进制左移运算符。
>>  (单目)
二进制右移运算符。

实例:

假设如果 A = 60,且 B = 13,现在以二进制格式表示,它们如下所示:

A = 0011 1100

B = 0000 1101

-----------------

A&B = 0000 1100

A|B = 0011 1101

A^B = 0011 0001

~A  = 1100 0011


  • 1.5赋值运算符

运算符
描述
= 赋值运算符        实例:A = 1;   B = A +2;
+=
加且赋值运算符  实例:C +=A 相当于 C = C + A
-=
减且赋值运算符
*= 且赋值运算符
/= 除且赋值运算
%= 求模且赋值运算符
<<=
左移且赋值运算符
>>= 右移且赋值运算符
&=
按位与或且赋值运算符
^= 按位异或且赋值运算符
|=
按位或且赋值运算符
  • 1.6其他运算符

运算符
描述
sizeof() 返回变量大小。
& 返回变量地址。
*
指向一个变量。
?:
条件表达式。
    • 1.7左值(lvalue)与右值(rvalue)

    变量为右值时,编译器只是取变量的值,左值标志了一个特定的位置来存储结果。

    注意:左值同时还要满足可以改变。

    • 2 优先级

C语言-----运算符、优先级 、类型转换
#注意:后缀运算符有个特性,循环时会在下条语句才生效。
  • 3 类型转换

  • 3.1默认转换

当两个数据类型不同进行算数运算时,会默认把存储空间小的数据类型转换成存储空间大的数据类型。

作用:为了更加精确数据类型。

实例:
#includde <stdio.h>

int main()
{
      printf("整型输出:%d\n', 1 + 2.0);
      printf("浮点型输出:%f\n", 1 + 2.0);
}

/*
输出结果:
整型输出:0           //错?  原因输出结果为浮点型,却强制输出为整型错。
浮点型输出:3.0


*/
  • 3.2强制类型转换

(A)B、把B的数据类型强制转换为A类型。
实例:

#include <stdio.h>

int main ()
{
      printf("整型输出A:%d\n", 1 + (int)2.0):      //强制转换
      printf("浮点型输出:%f\n", 1 + 2.0);
      printf("整型输出B:%d\n", 1 + (int)1.8);     //输出损失精度
}
/*
输出结果:
整型输出A:3
浮点型输出:3.0
整型输出B:2
*/