运算符:三⽬运算符,运算符优先级,sizeof,⾃增⾃减,取余
⼀://---------运算符-----------//
  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.断点调试

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。