您的位置:首页 > 编程语言 > C语言/C++

iOS学习第三天,C语言的学习

2016-01-08 19:02 211 查看
# 运算符的概念以及分类

##1.运算符基本概念

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

+例如告诉程序, 某两个数相加, 相减等

##2.运算符分类

- 按照功能划分:

+算术运算符

+关系运算符与逻辑运算符

+按位运算符

- 运算符根据参与运算的操作数的个数分为

+单目运算

* 单目运算:只有一个操作数如 : i++ ! sizeof

+双目运算

* 双目运算:有两个操作数如 : a+b

+三目运算

* 三目预算:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0

# 运算符的优先级以及结合性

##1.优先级

- C语言中,运算符的运算优先级共分为15级。1 级最高,15 级最低。在表达式中,优先级较高的先于优先级较低的进行运算。而在一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。

> **提示:一般情况下不需要死记硬背优先级, 只需要记住()优先级最高即可**

##2.结合性

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

+算术运算符的结合性是自左至右,即先左后右。

例如表达式: x-y+z

则y 应先与“-”号结合,执行 x-y 运算,然后再执行+z 的运算。这种自左至右的结合方向就称为“左结合性”。

+而自右至左的结合方向称为“右结合性”。

最典型的右结合性运算符是赋值运算符例如:如x=y=z

由于“=”具有右结合性,应先执行y=z 再执行x=(y=z)运算。

# 算术运算符

##1.算术运算符

|名称|符号|说明|

|--|--|--|

|加法运算符|+|双目运算符,即应有两个量参与加法运算。如a+b,4+8等。具有左结合性。|

|减法运算符|-|双目运算符。但“-”也可作负值运算符,此时为单目运算,如-x,-5等具有左结合性。

|乘法运算符|*|双目运算符,具有左结合性.

|除法运算符|/|双目运算符,具有左结合性。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型|

|求余运算符 (模运算符)|%|双目运算符,具有左结合性。要求参与运算的量均为整型,不能应用于float或double 类型。求余运算的结果等于两数相除后的余数,整除时结果为0。

注:

- 整数除于整数,求出来的结果依然是整数

- 浮点型赋值给整型会损失小数部分

- %两侧必须都为整数

- 利用%求出来的余数是正数还是负数,由%左边的被除数决定,被除数是正数,余数就是正数,反之则反

##2.结合性和优先级

- 结合性:从左到右

- 优先级:

+ * / % 优先级 大于 + -

+ 优先级相同则左结合计算

3*5/3+18

先算3*5

然后再算除3

最后结果再+18

##3.算术运算的注意点

- 1.自动类型转换

int a= 10.6;

int b = 10.5 + 1.7;

- 2.自动将大类型转换为了小类型,会丢失精度

自动类型提升

int b = 10.5 + 10;

- 3.将右边的10提升为了double类型

double b = 1.0 / 2;

解决除法的精度问题

- 4.强制类型转换

double a = (double)1 / 2;

double b = (double)(1 / 2);

# 求余运算符

##1.求余运算注意事项

- 参与求余运算的必须是整数

+例如: 10%2 20%3

+错误写法: 12.3%3

10 % 2 = 0

因为 10 可以被2整除, 没有余数

10 % 3 = 1

因为 10除以3余1, 所以结果为1

- 注意

- 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

- 运算结果的正负性取决于第一个运算数,跟后面的运算数无关

10 % 3 = 1

-10 % 3 = -1

10 % -3 = 1

# 赋值运算符

##1.赋值运算符

+简单赋值运算符: =

+复合赋值运算符: +=、-=、*=、/=、%=

##2.赋值表达式

- 什么是表达式?

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

+例如:算术表达式、逻辑表达式、字符表达式等。

- 表达式的特点:

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

- 赋值表达式

+由“=”连接的式子称为赋值表达式。

* 例如: x = a + b;

> * 等号=左边只能是变量,不能是常量,下面的写法是错误的:10= 10 + 5;

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

- 赋值运算符的结合性

+赋值运算符具有右结合性, 而且优先级比算术运算符低

* 例如: int a = 3 + 5; 会先计算3 + 5, 然后再把结果赋值给a

* 例如: int a = b = c = 5; 右结合性可理解为a=(b=(c=5))

# 复合运算符

##1.复合赋值运算符

- 在赋值符“=”之前加上其它二目运算符可构成复合赋值符。

+ /= 除后赋值 变量 /=表达式 如:a/=3;即a=a/3

+ *= 乘后赋值 变量 *=表达式 如:a*=3;即a=a*3

+ %= 取模后赋值 变量 %=表达式 如:a%=3;即a=a%3

+ += 加后赋值 变量 +=表达式 如:a+=3;即a=a+3

+ -= 减后赋值 变量 -=表达式 如:a-=3;即a=a-3

构成复合赋值表达式的一般形式为:

变量双目运算符 = 表达式; 如: a *= 1 + 2;

它等效于

变量 = 变量双目运算符 表达式; 如: a = (1 +2) * a;

>+ 注意:赋值运算符优先级排名14位,仅仅高于“,”运算符。

# 自增运算符

##1.自增、自减运算符介绍

- 在程序设计中,经常遇到“i=i+1”和“i=i-1”这两种极为常用的操作。C语言为这种操作
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: