黑马程序员——C语言——基本运算
基本运算分为:算术运算,赋值运算,自增自减运算,关系运算,逻辑运算,三目运算。
一、 算术运算
1、加法运算:用“+”号表示,还可以表示正数
2、减法运算:用“—”号表示,还可以表示负数
3、乘法运算: 用“*”而不是“x”表示
4、除法运算: 用“/”而不是“÷”表示(整数除以正数,结果仍然是整数)
5、取余运算: 用“%”号表示,两侧都是整数,并且最后的正负号由%左侧的整数决定。
6、类型转换:
① 自动类型转换
int a = 10.6;
int b = 10.5 + 1.7;
自动将大类型转换为了小类型,会丢失精度
② 自动类型提升
int b = 10.5 + 10;
将右边的10提升为了double类型
double b = 1.0 / 2;
解决除法的精度问题
③ 强制类型转换
double a = (double)1 / 2;
double b = (double)(1 / 2);
算术运算代码举例如下:
1 #include <stdio.h> 2 3 int main() 4 { 5 //1.算数运算符的基本使用 6 int a = 10 + 1 + 2 - 3 + 5; 7 8 int b = -10; 9 10 int c = 10 * b; 11 12 int d = 10 / 2; 13 14 // 取余运算(模运算) 15 // %两边都是整数 16 // %取余结果的正负性只跟%左边的数值有关 17 int e = 10 % -3; 18 printf("%d\n", a); 19 printf("%d\n", b); 20 printf("%d\n", c); 21 printf("%d\n", d); 22 printf("%d\n", e); 23 24 // 自动类型转换(double->int) 25 int m = 10.8; 26 27 // 强制类型转换(double->int) 28 int n = (int) 10.5; 29 printf("%d\n",m ); 30 31 32 // 自动类型提升(int->double) 33 double x = 10.6 + 6; 34 35 double y = 1 / 3; 36 37 double z = (double)3/2; 38 39 printf("e的值是%f\n", z); 40 41 42 return 0; 43 }
运行的结果为:
二、赋值运算
1、 简单赋值
1 #include <stdio.h> 2 3 int main() 4 { 5 //简单赋值 6 int a = 10; 7 8 int b; 9 b= 6; 10 return 0; 11 }
2、 复合赋值
1 // 复合赋值运算 2 a += 5; // a = a + 5; 3 4 a *= 5; // a = a * 5; 5 6 a += 5 + 6 + 4; // a = a + (5 + 6 + 4);
三、 自增自减运算
自增运算符++,例如(a++,++a);自减运算符,; // a -= 1; a = a - 1; 13
四、 关系运算
1、 真假性。在C语言中,条件成立为“真”,条件不成立为“假”,并且规定“0”表示假,任何其他非零值都表示真。
2、 关系运算的运算结果:关系运算的结果只有两种,即真假。条件成立,为真,默认值为1;不成立,为假,默认值为0
3、 特别注意:
① 关系运算符的优先级低于算术运算符
② 关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低于后者
③ 关系运算符的结合顺序是从左到右。
关系运算代码如下:
1 #include <stdio.h> 2 3 int main() 4 { 5 6 int a = 10; 7 8 int b = 11; 9 10 // 条件成立就返回1,真 11 // 条件不成立就返回0,假 12 int result = b >= a; 13 14 printf("%d\n", result); 15 16 17 }
五、逻辑运算
1、 逻辑与(表示符号&&)
“条件A&&条件BB”
当条件A和条件B都成立时,结果为真,即值为1,否则为假
例如
1 逻辑与 条件1 && 条件2 2 3 int a = 10>3 && 7<6; 4 5 int a = 0 && 10; 6 7 printf("a=%d\n", a);
2、 逻辑或(表示符号||)
“条件A||条件B”
当条件A和条件B只要一个成立时,结果为真,即值为1,否则为假
例如
1 // 逻辑或 条件1 || 条件2 2 3 4 int a = 10; 5 int b = 10; 6 7 int c = (a<5) || (b++ - 10); 8 9 // a = 10 10 // b = 11 11 // c = 0 12 printf("a=%d, b=%d, c=%d\n", a, b, c);
3、 逻辑非(表示符号 !)
“!条件A”
对条件A进行取反:若条件A成立,结果就为假,即值为0,否则为真。
1 // 逻辑非 !条件 2 // 如果条件成立,就返回0;如果条件不成立,就返回1 3 4 5 6 7 int a = !!10; 8 9 printf("a=%d\n", a); 10 11
六、三目运算符
三目运算符,运算格式: 条件 ? 数值1 : 数值2
1 // 三目运算符 条件 ? 数值1 : 数值2 2 3 int a = !100 ? 9 : 89; 4 5 printf("a=%d\n", a);