黑马程序员——C语言基础 03—基本运算符
2015-11-10 22:45
411 查看
——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——-
一、基本运算
1.基本运算符:
C语言中提供了多种运算符号,有算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三目运算符(条件运算符)。
1)算术运算符
包括有 +, -,*, /, %, ++i , –i, i++, i– (自增自减运算符)
注意:如果 x=-32,y =3, 则x%y== -2;
如果x=32,y=(-3) 则x%y==2;求余时,结果的正负性与%左侧的数值多正负性保持一致。
自增自减运算符:i++,i–(先用后加/减);++i,–i(先加/减后用)
2)算术表达式和运算符的优先级与结合性
表达式求值时按照运算符的优先级分别执行,先乘除后加减。
3)不同类型数据间的混合运算
char—》int—》float—》double
4)强制类型转换符
(类型名)(表达式)
2、赋值运算符‘=’与‘ +=’
sizeof
作用:用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
基本形式
sizeof(变量\常量) sizeof变量\常量
sizeof(数据类型)
3.关系运算符 >, <, >=, <=
关系运算符返回值只有真(1)与假(0);
关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低语后者:2==3>1
关系运算符的结合方向为“从左往右”:4>3>2
关系运算符的优先级小于算数运算符:3+4>8-2
4 . 逻辑运算符 &&, ||, !
1)逻辑与&&
使用格式:“条件a&&条件b”
运算结果:
只有当条件a和条件b都成立时,结果才为1,也就是“真”;其余情况的结果都为“0”,也就是“假”。因此,条件a或b只要有一个不成立,结果都为“0”,也就是“假”。
注意:逻辑与的结合方向是“自左至右”。
&&的短路问题:
2)逻辑或||
使用格式:“条件a ||条件b”
运算结果:
当条件a或条件b只要一个成立时(也包括条件a、b都成立),结果就是1,也就是”真“;只有当条件a和b都不成立时,结果才是0,也就是假。
3)逻辑非 !
使用格式: “!条件a”
运算结果:
其实就是对条件a进行取反:若条件a成立,结果就是0;若条件不成立,结果就为1。
注意
可以连续多次使用逻辑非运算符:比如 !!(4>2)的结果是真。
4) 优先级
逻辑运算符的优先级顺序为:小括号()>符号-> ! >算数运算符>关系运算符>&&>||
三目运算符 ?:
使用格式: 条件 ? 数值1(或表达式1):数值2(或表达式2)
例如 a = 0 ? 9 : 89; 则此刻a==89;
一、基本运算
1.基本运算符:
C语言中提供了多种运算符号,有算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、三目运算符(条件运算符)。
1)算术运算符
包括有 +, -,*, /, %, ++i , –i, i++, i– (自增自减运算符)
int main() { int x=32, y=3; int a= x+y; //加法 int b= x-y; //减法 int c =x/y; // 除法得商 int d =x%y; //除法得余(求余) ... }
注意:如果 x=-32,y =3, 则x%y== -2;
如果x=32,y=(-3) 则x%y==2;求余时,结果的正负性与%左侧的数值多正负性保持一致。
自增自减运算符:i++,i–(先用后加/减);++i,–i(先加/减后用)
int main(){ int i = 3; int j1 = i++; int j2 = ++i; printf("%d,%d",j1,j2); return 0; } 则此时j1==3,j2==4; 注意:自增与自减运算符只能用于变量,而不能用于常量或者表达式。例如10++, (a+b)++都是不合法的。
2)算术表达式和运算符的优先级与结合性
表达式求值时按照运算符的优先级分别执行,先乘除后加减。
3)不同类型数据间的混合运算
char—》int—》float—》double
4)强制类型转换符
(类型名)(表达式)
int(x+y) //将表达式x+y的值转换成int型
2、赋值运算符‘=’与‘ +=’
int a=3; // 将3的值赋给=左边的变量a; int a=b=4; //连续赋值,左边只能是常量,不能是变量 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;
sizeof
作用:用来计算一个变量或者一个常量、一种数据类型所占的内存字节数。
基本形式
sizeof(变量\常量) sizeof变量\常量
sizeof(数据类型)
#include <stdio.h> int main() { //int size = sizeof(10); //int size = sizeof 10.9; int a = 10; //int size = sizeof(a); //int size = sizeof a; int size = sizeof(char); // int size = sizeof char; // 错误的 printf("size=%d\n", size); return 0; }
3.关系运算符 >, <, >=, <=
关系运算符返回值只有真(1)与假(0);
关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等,且前者的优先级低语后者:2==3>1
关系运算符的结合方向为“从左往右”:4>3>2
关系运算符的优先级小于算数运算符:3+4>8-2
#include <stdio.h> int main() { int a = 10; int b = 11; int result = b >= a; printf("%d\n", result); return 0; // 条件成立就返回1,真;条件不成立就返回0,假 } 此时输出结果是1.
4 . 逻辑运算符 &&, ||, !
1)逻辑与&&
使用格式:“条件a&&条件b”
运算结果:
只有当条件a和条件b都成立时,结果才为1,也就是“真”;其余情况的结果都为“0”,也就是“假”。因此,条件a或b只要有一个不成立,结果都为“0”,也就是“假”。
注意:逻辑与的结合方向是“自左至右”。
&&的短路问题:
0&&a++ 2||a++ 此时的a++都不参与运算
2)逻辑或||
使用格式:“条件a ||条件b”
运算结果:
当条件a或条件b只要一个成立时(也包括条件a、b都成立),结果就是1,也就是”真“;只有当条件a和b都不成立时,结果才是0,也就是假。
int a = 10; int b = 15; int c = (a<10) || (b++ - 15); printf("a=%d, b=%d, c=%d\n", a, b, c); 此时的 a = 10,b = 16,c = 0.
3)逻辑非 !
使用格式: “!条件a”
运算结果:
其实就是对条件a进行取反:若条件a成立,结果就是0;若条件不成立,结果就为1。
注意
可以连续多次使用逻辑非运算符:比如 !!(4>2)的结果是真。
4) 优先级
逻辑运算符的优先级顺序为:小括号()>符号-> ! >算数运算符>关系运算符>&&>||
三目运算符 ?:
使用格式: 条件 ? 数值1(或表达式1):数值2(或表达式2)
例如 a = 0 ? 9 : 89; 则此刻a==89;
经典题目:求两个数的最大值; int main() { int a = 10; int b = 20; int max = a>b ? a : b; printf("max is %d\n", max); 求3个数之间的最大值 int main() { int a=10; int b=20; int c=30; int abMax = (a > b) ? a : b; //求出a、b的最大值 int max = (abMax > c) ? abMax : c; //用c与abMax 比较最后的最大值 printf("max is %d\n", max); }
相关文章推荐
- 串的KMP模式匹配算法(C语言优化)
- c语言不定参数与printf函数的实现
- 最大子数组之暴力枚举法
- c语言最强大之处--指针
- 直接插入排序
- 达内C++视频
- 分治法之归并排序
- C++::My Effective C++
- 在C/C++代码中使用SSE等指令集的指令(5)SSE进行加法运算简单的性能测试
- 在C/C++代码中使用SSE等指令集的指令(4)SSE指令集Intrinsic函数使用
- 在C/C++代码中使用SSE等指令集的指令(3)SSE指令集基础
- 在C/C++代码中使用SSE等指令集的指令(2)参考手册
- C语言实现raw格式图像的读入和存取
- C++Primer之字符串
- 在C/C++代码中使用SSE等指令集的指令(1)介绍
- 【黑马程序员】C语言学习笔记(2) - 指针
- 分治策略之最大子数组问题
- C++基础::关于区间端点的问题
- C++设计模式[九]外观模式
- C语言如何在不定义函数的情况下实现递归