c语言中的操作符和表达式

来源:互联网 发布:同花顺云计算下载 编辑:程序博客网 时间:2024/05/16 13:38

经过近一段时间的学习,学到了操作符和表达式,先将学到的整理如下:

一.算数操作符:+、-、*、/、%

这个没什么好说的,但要注意 /号的两侧只要有一个浮点数就是浮点类型,定义变量的时候要注意;

%(取余)的两侧必须全是整数。

二.移位操作符:左移<<  右移>>

要想理解右移的概念,要先知道计算机中数据的存储方式,要先知道原码、补码、反码的概念;

在计算机中数据是按二进制存储的,但存储的并不是原码,而是补码,以-1为例(在32位计算机中)

-1的原码为10000000 00000000 00000000 00000001,第一位表示符号位,1为负,0为正。

-1的反码为111111111 111111111 111111111 111111110,正数的反码是其本身,负数的反码在其原码的基础上, 符号位不变,其余各个位取反

-1的补码为111111111 111111111 111111111 111111111,正数的补码就是其本身负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1) 在计算机中,是以补码的形式存储的。

无论反码,补码符号位都不会变,同样在左移右移的操作中。符号位也不会改变,只是对补码进行操作。

左移:

移位规则:左边抛弃,右边补零;以int num=10为例


在移位操作中,num的值不会改变下面以一个程序来证明:代码如下

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int num = 10;
printf("%d\n",num << 1);
printf("%d\n", num );

        return 0;

}

运行结果如下:num的值并未改变

右移:

移位规则:首先右移运算分两种

1.逻辑移位:

   左边用0填充,右边丢弃

2.算术移位

   左边用该值的符号位填充,右边丢弃


三:位操作符:操作数必须是整数,这些操作符也是用补码来计算的

   & //按位与:两两相对,只要有一个0,这个位就为0,全为1才是1

   | //按位或:只要有一个1,就为1;

   ^  //按位异或:相同为0,相异为1

四:赋值运算符,即"="

   他可以让你得到之前不满意的值,另外还有复合赋值符,例如:

   a+=b;意思为 a=a+b;其他类似的还有

    -=;*=;/=;%=;>>=;<<=;&=;|=;^=

五:单目操作符

   !逻辑反

    - 负值

   + 正值

   & 取地址

   sizeof  操作数的类型长度(以字节为单位)

   ~ 对一个数的二进制按位取反

   -- 前置、后置--

  ++ 前置、后置++

  * 间接访问操作符(解引用操作符)

  (类型) 强制类型转换

注意:sizeof 是操作符 不是函数

前置--和后置--是不一样的,前置是 先运算再赋值,后置是先赋值再运算;下面以一个程序来说明

代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
printf("%d\n", --a);
printf("%d\n", b--);
return 0;
}

结果为:


强制类型转换写法为 变量=(类型)变量

六:关系操作符

  >

  >=

  <

  <=

  != 用于测试相等

  == 用于测试相等

七:逻辑操作符

&&:逻辑与

||:  逻辑或

区分逻辑与和按位与
区分逻辑或和按位或
 

1&2----->0
1
&&2---->1
1
|2----->3
1
||2---->1

八:条件操作符 exp1?exp2:exp3

类似于 if(exp1)

{

exp2

}

else

{

exp3

}

九:逗号表达式 exp1, exp2, exp3,expN

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果 

十:下标引用操作符[]

例如 int arr[10]={0};

         arr[1]=10;

         操作数为 arr和1.

十一:函数调用操作符()

函数调用操作符
接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数
的参数




注意:我们不能写出依赖求值顺序的表达式。这样的表达式是不可移植的。尽量避免。

原创粉丝点击