一://---------运算符-----------//
  1.运算符是告诉编译程序执行特定算术或逻辑操作的符号。

  2.按照功能划分:

    算术运算符、 关系运算符与逻辑运算符、按位运算符。

  3.运算符根据参与运算的操作数的个数分为:
    单目运算、双目运算、三目运算

  4.单目运算:只有一个操作数 如 : i++ ! sizeof
  双目运算:有两个操作数 如 : a+b
  三目运算符:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0

二://---------优先级与结合性-----------//
  优先级: 15级 在表达式中,优先级 较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符 优先级相同时,则按运算符的 结合性所规定的结合方向处理。

  结合性: C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左)。

  小技巧 加括号

  特点:什么样数据类型相互运算结果还是什么数据类型

三://---------算术运算符-----------//
  结合性:从左到右

  1.优先级:
    (1) * / % 优先级 大于 + -
    (2) 优先级相同则左结合计算

  2.求余运算符
    注意:
      m%n 求余,相当于m/n 获取余数
    (1)n等于0 无意义
    (2)m等于0 结果为0
    (3)m>n 正常求余 如:8%3 = 2
    (4)m<n 结果是m 如:2%4 = 2 1%4 = 1 3%8=3
    2)运算结果的正负性取决于第一个运算数,跟后面的运算数无关

四://---------类型转换-----------//
  1.类型转换分为:隐式数据类型转换(自动转换) 和 显示数据类型转换(强制装换--强转)(类型说明符) (表达式)

  2.显示类型转换的方法是在被转换对象(或表达式)前加类型标识符,其格式是: (类型标识符)表达式

  3.在使用强制转换时应注意以下问题:
    1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y 则成了把x转换成int型之后再与y相加了。
    2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性 转换,而不改变数据说明时对该变量定义的类型。

五://---------表达式-----------//
  将同类型的数据(如常量、变量、函数等),用运算符号按一定的规则连接起来的、有意义 的式子称为表达式。

  例如:算术表达式、逻辑表达式、字符表达式等。
  表达式可以是常量也可以是变量或算式,在表达式中又可分为:算术表达式、逻辑表达式和字符串表达式。

  表达式的特点:
  表达式是一个意义的式子,所以一定有返回值

1.赋值表达式-----------//
  赋值运算符记为“=”,由“=”连接的式子称为赋值表达式。
  其一般形式为: 变量=表达式
  “=”定义为运算符,从而组成赋值表达式。

  凡是表达式可以出现的地方均可出现赋值表达式。

2.赋值表达式语句-----------//
  在赋值表达式后面添加一个分号,构成了一个语句,称为赋值语句。

3.复合赋值表达式语句-----------//
  在赋值符“=”之前加上其它二目运算符可构成复合赋值符。

4.赋值运算符优先级排名14位,仅仅高于“,”运算符。

 自增自减运算符-----------//
    1)前缀表达式:++x, --x; 其中x表示变量名,先完成变量的自增自减1运算,再用x的值作为表
    达式的值;即“先变后用”,也就是变量的值先变,再用变量的值参与运算。

    2)后缀表达式:x++, x--; 先用x的当前值作为表达式的值,再进行自增自减1运算。即“先用
    后变”,也就是先用变量的值参与运算,变量的值再进行自增自减变化。

  注意:不管“++” 在前还是在后,最后变量的值都会+1

3)自增、自减运算只能用于单个变量,只要是标准类型的变量,不管是整型、实型,还是字符型 变量等,但不能用于表达式或常量。

  优先级很高 右结合

//---------sizeof运算符-----------//
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。sizeof操作符以字节形式给 出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小 由操作数的类型决定。
用法:sizeof(常量/变量)

1)用于数据类型
sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int)。

2)用于常量(可以省略括号)
int size = sizeof(1); size = sizeof(1.1); size = sizeof(1.1f); size = sizeof('a'); //4
当sizeof后面的操作数是常量或是变量那么后面小阔号是可以省略的
size = sizeof 1;

3)用于变量(可以省略括号)
sizeof使用形式:sizeof(var_name)或sizeof var_name 变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的 用法更普遍,大多数程序员采用这种形式。
char a;
size = sizeof(a);
size = sizeof a; //省略了括号

区分:
//------
char a;
printf("%lu",sizeof(a));
//-------
printf("%lu",sizeof(char);
//-------
printf("%lu",sizeof('a'));

注意:
sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据 类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。

//---------逗号运算符-----------//
在C语言中逗号“,”也是一种运算符,称为逗号运算符。
其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。
a = (a+b,c+2) 其一般形式为:
表达式1, 表达式2
2、其求值过程是分别求两个表达式的值,并以表达式2的(最后一个表达式的值)值作为整个逗号表达式的值。

逗号运算符使用注意:
1)逗号表达式一般形式中的表达式1和表达式2 也可以又是逗号表达式。例如:
表达式1, ( 表达式2, 表达式3 )
形成了嵌套情形。
因此可以把逗号表达式扩展为以下形式:
2)程序中使用逗号表达式,通常是要分别求逗号表达式内各表达式的值,并不一定要求整个逗号 表达式的值。
3)并不是在所有出现逗号的地方都组成逗号表达式,如在变量说明中,函数参数表中逗号只是用 作各变量之间的间隔符。

//---------关系运算符-----------//
非0即真
比较两个量的运算符称为关系运算符。
关系运算符返回值只有两个要么是真(1) 要么是假(0)

> < >= <= == !=
在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=

//---------逻辑运算符运算符-----------//
C语言中提供了三种逻辑运算符:
&&(与运算) ||(或运算) !(非运算)
逻辑表达式的一般形式为:
表达式 逻辑运算符 表达式
其中的表达式可以又是逻辑表达式,从而组成了嵌套的情形。例如:
(a&&b)&&c 根据逻辑运算符的左结合性

逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。

1) 与运算(&&) ----> 口诀:同真为真,一假则假
2) 或运算(||) ----> 口诀:一真为真,同假为假
3) 非运算(!) ----> 口诀:真变假,假变真

与运算符(&&)和或运算符(||)均为双目运算符。具有左结合性。 非运算符(!)为单目运算符,具有右结合性。

注意:
1)虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。
但反过来在判断一个量是为“真”还是为“假”时, 以“0”代表“假”,以非“0”的数值作为“真”。

与短路:&& 只要第一个条件表达为假那么后面的条件表达就不参与运算了
或短路:|| 只要第一个条件表达式为真那么后面的条件表达式就不参与运算了

运算符优先级:
()
-负号 右结合
! 右结合
自增自减 左结合
算术运算符 左结合
关系运算符 左结合 (== !=略低一级)
逻辑 && || 左结合 注意:(非运算符(!)为单目运算符,具有右结合性。)
三目运算符 右结合
赋值运算符 右结合
逗号运算符 左结合

int a = 4;

!a>3

//---------三目运算符-----------//
由条件运算符组成条件表达式的一般形式为:
表达式1? 表达式2: 表达式3

如果表达式1的值为真,则以表达式2 的值作为条件表达式的值 否则以表达式2的值作为整个条件表达式的值。 条件表达式通常用于赋值语句之中。(表达式1控制表达式2或者表达式3的输出)

注意:
注意以下几点:
1. 条件运算符的运算优先级低于关系运算符和算术运算符,但高于赋值符。
因此 max=(a>b)? a:b可以去掉括号而写为 max=a>b?a:b
2. 条件运算符?和:是一对运算符,不能分开单独使用。
3. 条件运算符的结合方向是自右至左。
a>b?a:c>d?c:d应理解为
a>b?a:(c>d?c:d)

//---------Xcode的补充-----------//
1.显示行号
2.主题样式
3.断点调试

运算符:三目运算符,运算符优先级,sizeof,自增自减,取余的更多相关文章

  1. day03运算符、表达式、自增自减、三目运算符、程序结构、用户输入

    复习 1.java的输出语句 1)System.out.println(); 2)System.out.print(); 2.注释 1)单行注释 // 2)多行注释 /* .... */ 3.变量 1 ...

  2. 【转】 C语言自增自减运算符深入剖析

    转自:http://bbs.csdn.net/topics/330189207 C语言的自增++,自减--运算符对于初学者来说一直都是个难题,甚至很多老手也会产生困惑,最近我在网上看到一个问题:#in ...

  3. (4)javascript的运算符以及运算符的优先级

                                    运算符的使用方法 在javascript的程序中要完成各种各样的运算,是离不开运算符的. 在javascript中,按运算符类型可以分为 ...

  4. Day3 变量 运算符 及运算符的优先级

    变量 什么是变量: 可以变化的量 Java 是一种强类型语言,每个变量都必须声明其类型. Java变量是程序中最基本的存储单位,其要素包括变量名,变量类型,作用域. 注意事项: 每个变量都有类型, 类 ...

  5. PHP运算符:算数运算符、逻辑运算符、三目运算符、位运算符、字符串运算符。

    赋值运算符 PHP 赋值运算符用于向变量写值. PHP 中基础的赋值运算符是 "=". 这意味着右侧复制表达式会为左侧运算数设置值. _______________________ ...

  6. Mysql 中Left/Right join on后面and和where条件查询的差异-Mysql SQL运算符是有优先级

    一.Mysql中Left/Right join on后面and和where条件查询的差异 1.建两张测试表,一张商户定义表.一张商户操作状态明细表 1)商户定义表 CREATE TABLE hope. ...

  7. Java运算符使用总结(重点:自增自减、位运算和逻辑运算)

    Java运算符共包括这几种:算术运算符.比较运算符.位运算符.逻辑运算符.赋值运算符和其他运算符.(该图来自网络) 简单的运算符,就不过多介绍使用了,可自行测试.关于赋值运算,可以结合算术运算和位运算 ...

  8. java入门---运算符&算术运算符&自增自减运算符&关系运算符&位运算符

        计算机的最基本用途之一就是执行数学运算,作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量.我们可以把运算符分成以下几组: 算术运算符 关系运算符 位运算符 逻辑运算符 赋值运算符 ...

  9. java自增(自减)运算符

    自增(自减)运算符: ++ --就是可以将当前变量自我增加(减少)1 的运算符. i++, 后++, 先将 i 的值作为整个表达的值, 然后将 i 增加 1. ++i, 先++, 先将 i 增加 ...

随机推荐

  1. Android View加载圆形图片且同时绘制圆形图片的外部边缘边线及边框:LayerDrawable实现

     Android View加载圆形图片且同时绘制圆形图片的外部边缘边线及边框:LayerDrawable实现 LayerDrawable实现的结果和附录文章1,2,3中的layer-list一致. ...

  2. 线性回归Linear regression

    线性回归算法 解决回归问题 思想简单,容易实现 是许多强大的非线性模型的基础 结果具有很好的可解释性 蕴含机器学习中的很多重要思想 基本思想:寻找一条直线,最大程度的“拟合”样本特征和样本输出标记之间 ...

  3. SPOJ LCS2 多个串的最长公共子串

    这里串最多有10个,找所有串的最长公共子串 这里后缀自动机做,以第一个串建立后缀自动机,后面的串一个个去匹配,每次得到当前串在可到达状态上所能得到的最长后缀长度 拿所有串匹配后得到的结果进行计算 #i ...

  4. hdu 2795线段树

    #include<stdio.h> #define N 200005 int h,w,n; struct node { int x,y,max; }a]; int mmax(int e,i ...

  5. 【转】SQL Server 创建约束图解 唯一 主键-界面操作

    SQL Server 创建约束图解 唯一 主键-界面操作 SQLServer中有五种约束,Primary Key约束.Foreign Key约束.Unique约束.Default约束和Check约束, ...

  6. android开发里跳过的坑-电源锁WakeLock不起作用

    由于个别需求,需要做一个不让系统屏常亮不休眠的APP,于是使用了电源锁,在oncreate里加了如下代码: PowerManager pm = (PowerManager) context .getS ...

  7. BZOJ1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    给n<=4000000,c,a1,b1,c1,a2,b2,c2,以c为初始得到的数,每次可以把得到的某个数x进行操作f1(x)=a1*x/c1+b1,f2(x)=a2*x/c2+b2,求最后能得 ...

  8. CF671D:Roads in Yusland

    n<=300000个点的树,给m<=300000条带权路径(ui,vi,保证vi是ui的祖先)求覆盖整棵树每条边的最小权和. 好题好姿势!直观的看到可以树形DP,f[i]表示把点i包括它爸 ...

  9. linux mail 发邮件

    system('echo "'.$xmlHeader.$xmlBody.$xmlFooter.'" | mail -s "百度新闻源生成成功,地址=>http:// ...

  10. 国内代码托管平台(Git和SVN)

        Github(Git和SVN)https://github.com/ 可以说GitHub的出现完全颠覆了以往大家对代码托管网站的认识.GitHub不但是一个代码托管网站,更是一个程序员的SNS ...