运算符 1、基本概念 运算符是告诉编译程序执行特定算术或逻辑操作的符号。 2、分类 按照功能划分: 算术运算符、关系运算符与逻辑运算符、按位运算符。 运算符根据参与运算的操作数的个数分为: 单目运算:只有一个操作数如 : i++ ! sizeof 双目运算:有两个操作数如 : a+b 三目预算:C语言中唯一的一个,也称为问号表达式 a>b ? 1 : 0 3、算术运算符包括:+ - * / % 特点: 什么样数据类型相互运算结果还是什么数据类型 [objc] view plain copy
- int a = 10,b = 3, c = 0,d = 0,e = 0, f = 0;
- c = a + b;
- d = a - b;
- e = a * b;
- f = a / b;
4、类型转换问题 类型转换分为:隐式数据类型转换 和 显示数据类型转换 1)自动转换(隐式转换): 自动转换发生在不同数据类型的量混合运算时,由编译系统自动完成。自动转换遵循以下规则: (1)若参与运算量的类型不同,则先转换成同一类型,然后进行运算。 (2)转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转 成long型后再进行运算。 (3)所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成 double型,再作运算。 (4)char型和short型参与运算时,必须先转换成int型。 (5)在赋值运算中,两边数据类型不同时,右边的类型将转换为左边的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度。 2)强制类型转换(显示转换):强制类型转换是通过类型转换运算来实现的。 其一般形式为: (类型说明符) (表达式) 在使用强制转换时应注意以下问题: (1)类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y 则成了把x转换成int型之后再与y相加了。 (2)无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。 [objc] view plain copy
- /*
- 算术运算符中的类型转换问题
- 1)隐式转换
- 2)显式转换
- */
- // 1) 隐式转换:
- // f1 num
- // float int
-
- float f1 = 23.4f;
- int num = 10;
- float f2 = f1 + num;
- printf("%d\n",f1 + num);
- printf("%f\n",f2);
- // 2) 显式转换:
- //强制类型转换 : (要转换的类型)(变量或者表达式)
- printf("%d\n",(int)(f1 + num));
5、关系运算符在程序中经常需要比较两个量的大小关系, 以决定程序下一步的工作。 比较两个量的运算符称为关系运算符。 关系运算符都是双目运算符,包括>(大于) <(小于) >=(大于等于) <=(小于等于) ==(等于) !=(不等于) 6、逻辑运算符 C语言中提供了三种逻辑运算符:&&(与运算) ||(或运算) !(非运算) 逻辑表达式: 表达式 逻辑运算符 表达式 如:(a&&b)&&c 表达式的值:&&只要有一个是假的,表达式的值则为假的 || 只要有一个是真的,表达式的值则为真的 !真变假,假变真 7、三目运算符 表达式1?表达式2:表达式3 如果表达式1为真,则以表达式2作为条件表达式的值,否则以表达式3作为条件表达式的值。
|