小程找工作之->c语言的运算符

来源:互联网 发布:黑马程序员52期百度云 编辑:程序博客网 时间:2024/05/18 01:43

C语言的运算符可以分为三个大类:算术运算符、关系运算符、逻辑运算符。主要内容就是运算符的优先级,以及一些其他的细节问题。下面就做一个小小的总结和整理。

  运算符优先级的基本规则:优先级不同:优先级高的先运算,优先级相同:从左至右运算;另外后缀运算符优先级大于前缀运算符优先级。因此++i++运算规则为  ++(i++)

如何快速分辨出运算符的优先级?基本优先级规则 算术运算符>关系运算符>逻辑运算符>赋值运算符>逗号运算符

  十六级运算级:

     一级运算符:常量,标识,字符串常量,括号表达式()。

     二级运算符:后缀表达式,紧跟在变量后面的运算符,主要有"++,--,.,->,[],()"几种运算符,另外一个需要注意的地方就是复合初始化运算符(type-name){};

     三级运算符:  单目运算符,紧跟在变量前面的运算符,主要有 取正取负:‘+’,‘-’,取地址,解析地址(不是乘):‘&’,‘*’;前缀自增自减运算符:++,--;逻辑运算符:‘~,!’。sizeof()运算符

    Attention:二级运算符和三级运算符之间通常会有以下几个点需要注意的地方

   1:后缀++和前缀++运算符的区别和联系:i++和++i的区别在于1>:i++返回原先i的值(但i的值已经改变为i+1),而++i返回i+1(i的值已经变化);2>在C语言中i++和++i返回的均是左值,3>在C++中由于存在运算符重载,++i返回的是一个左值,而i++返回的是一个右值,因此i++不能作为一个左值来使用,而++i作为左值使用的时候只会报warning,常用的如赋值,自增自减取地址等等,我们需要在很多场合来判断表达式的合法性。常见的有以下几个方面:

(1)++i++;  i++ = 3;  *p = &i++;**p = &p++;这些均是不正确的表达式;(在C和C++中均会报错)

 (2)诸如:++i = i++;的问题在C中会报错,在C++中只会报warning;

  (3)int x = 2; int y = ++x+x++; y=7;(在执行x++后x的值已经改变为4,输出的时候前面的x变为4);

(4)总而言之:任何对于++i的操作均会立即反应在i身上,任何对于i++的操作都不会立即反应在返回值身上;

(5)i++和++i的优先级是不一样的,i++优先级更高;

(6)在声明指针类型的时候 int *p[4],此时p的运算规则是先跟右边的[]运算符结合,标识p是一个数组类型,而后再跟*运算符结合,因此p声明为一个4个int型指针的数组 而 int (*p)[4],先声明p是一个指针,再结合,声明为一个指向4个整型变量的数组

  四级运算符:强制转换符 (转换类型)变量类型

  五级运算符:乘法除法取余

  六级运算符:加法减法;

  七级运算符:移位运算符

   八级运算符:关系运算符(注意比相等不相等运算符高一个级别)

  九级运算符:相等不相等运算符

十到十二:位与 位异或 位或

十三到十四:逻辑与逻辑或(注意判别式中的前置位为真假后置位不判断的情况)

十五到十七:三元赋值逗号。

  

   

原创粉丝点击