- 运算符与表达式
- 运算符与表达式的概念
- 算术运算符与算术表达式
- 关系运算符与关系表达式
- 逻辑运算符与逻辑表达式
- 赋值运算符与赋值表达式
- 条件运算符与条件表达式
- 位运算符
- sizeof运算符
- 运算优先级
运算符:就是参与运算的符号,与运算符一起运算的变量,常量称之为操作数
表达式:是变量或者直接量与运算符组成的式子,表达式会有一个计算的结果,称之为表达式的值
运算符与表达式的概念在应用程序中,经常会对数据进行运算,所以勒C语言提供了多种类型的运算符,即专门用于告诉程序执行特定运算或逻辑操作的符号
有下面常见的七大类:
| 运算符类型 | 作用 |
|---|---|
| 算数运算符 | 用于处理四则运算 |
| 关系运算符 | 用于表达式的比较,并返回一个真值或假值 |
| 逻辑运算符 | 用于根据表达式的值返回真值或假值 |
| 赋值运算符 | 用于将表达式的值赋值给变量 |
| 条件运算符 | 用于处理条件判断 |
| 位运算符 | 用于处理数据的位运算 |
| sizeof运算符 | 用于求字节长度 |
C语言中的算数运算符就是用来处理四则运算的符号
我们直接上图
| 运算符 | 名称 | 实列 | 运算结果 |
|---|---|---|---|
| + | 正号 | +3 | 3 |
| - | 负号 | a=4;-a; | -4 |
| + | 加号 | 1+1 | 2 |
| - | 减号 | 2-1 | 1 |
| * | 乘 | 9*9 | 81 |
| / | 除 | 6/3 | 2 |
| % | 求余数 | 6%5 | 1 |
| ++ | 自增(前) | a=2;b=++a; | b=3;a=3; |
| ++ | 自减(前) | a=2;b=- -a; | b=1;a=1; |
| – | 自增(后) | a=2;b=a++; | b=2;a=3; |
| – | 自减(后) | a=2;b=a- - | b=2;a=1; |
关于自增,自减我们一定要注意:
(+号在前)++a 表示a自增后在参与其他运算
(-号在前) - -a 表示a自减后在参与其他运算
(+号在后)a++ 表示参与运算后a的值在自增1
(-号在后)- - ab 表示参与运算后a的值在自减1
算数表达式
使用算数运算符连接起来的表达式称为算数表达式。
上代码:
#include关系运算符与关系表达式int main() { int a,b,c,x,y,z; a=1; b=2; c=3; printf("%dn",a+b); printf("自增(前):%dn" ,++a); //a自增 ,1+1=2,存储于a中,此时a中的值已经变为2(已经不再是1),在运算中输出得结果为2 。 printf("自增(后):%dn",a++); //a先运算, 因为a中存储的值为2,所以a=2,此时运算赋值给a=2.运算中输出的结果为2.然后在自增,得a=3 。后面自增得到结果,存储于a中,但并没有用到 printf("此时a的值:%dn",a); //这一步用到了,等于3,所以运算输出a=3 printf("自减(后):%dn",b--);//先b运算,上面赋给a的值为2,所以b=2,输出的值为2,然后自减,2-1=1.此时存储于b中的值为1. printf("自减(前):%dn",--b);//先自减,因为上一步存储于b中的值为1,b=1.所以1-1=0.然后在进行运算,输出b的值为1. printf("自减(前):%dn",--c); printf("求余的值为:%dn",7%5); } //运行结果为: 3 自增(前):2 自增(后):2 此时a的值:3 自减(后):2 自减(前):0 自减(前):2 求余的值为:2
判断两个数据关系的运算符就叫做关系运算符,也称为比较运算符
| 运算符 | 运算 | 列子 | 结果 |
|---|---|---|---|
| == | 相等于 | 1==2 | 0(假) |
| != | 不等于 | 1!=2 | 1(真) |
| < | 小于 | 1<2 | 1(真) |
| > | 大于 | 1>2 | 0(假) |
| <= | 小于等于 | 1<=2 | 1(真) |
| >= | 大于等于 | 1>=2 | 0(假) |
关系运算符属于双目运算符,他们在运算时需要两个变量,如a>b
关系表达式
由关系运算符连接起来的表达式称为关系表达式
#include逻辑运算符与逻辑表达式main() { int x,y,z; //变量说明(声明) //函数内的变量声明务必要放到函数主体的最顶部 int max(int a,int b); //函数声明(说明) printf("输入两个整数,判断大小:"); //输出 字符串 scanf("%dn %d",&x,&y); //输入 x和y的值, //scanf()为内置的输入函数 z=max(x,y); //先调用max()函数, //再将max()函数返回的值赋给z printf("最大数是: %d n",z); //输出 字符串 //printf()为内置的输出函数 } //主函数(main) int max(int a,int b) { if (a>b) return a;else return b; } //自定义max函数
逻辑运算符用于判断复合条件的真假,其结果仍(真)或(假)
| 运算符 | 名称 | 列子 | 结果 |
|---|---|---|---|
| && | 与 | a&&b | 如果a和b都为真,其结果为真,否则为假 |
| ! | 非 | !a | 如果a为假,!a为真,否则为假 |
| II | 或 | aIIb | 如果a和b有一个或者一个以上为真,则为真,否则为假 |
逻辑表达式
由逻辑运算符连接起来的表达式称为逻辑表达式
代码是在博主新垣结衣的老婆看到的
#include赋值运算符与赋值表达式int main() { int age=0; // 年龄18-30 int height=0; // 身高165-175单位:厘米cm int sc=0; // 身材,1-火辣;2-普通;3-飞机场。 int yz=0; // 颜值,1-漂亮;2-一般;3-歪瓜裂枣(翠花)。 printf("请输入年龄、身高、身材(1-火辣;2-普通;3-飞机场)(用空格隔开):"); scanf("%d %d %d",&age,&height,&sc); printf("请输入颜值(1-漂亮;2-一般;3-歪瓜裂枣(翠花)):"); scanf("%d",&yz); if ( ( (age >= 18) && (age <= 30) ) && // 年龄在25-30之间 ( (height >= 165) && (height <= 175) ) && // 身高在165-175之间 两个都必须为真 ( (sc == 1) ) && // 身材,1-火辣 ( (yz == 1) || (yz == 2) ) ) // 颜值,1-漂亮或者2-一般 //两个有一个为真就行 { printf("超女选秀合格,送往后宫。n"); } else { printf("超女选秀不合格,发放五两银子后送回家。n"); } }
赋值运算符的作用是将常量,变量或表达式的值赋给某一个变量
| 运算符 | 名称 | 列子 | 结果 |
|---|---|---|---|
| = | 赋值 | a=3;b=2; | a=3;b=2; |
| += | 加等于 | a=3;b=2;a+=b; | a=5;b=2 |
| -= | 减等于 | a=3;b=2;a-=b | a=1;b=2 |
| *= | 乘等于 | a=3;b=2;a*=b; | a=6;b=2 |
| /= | 除等于 | a=3;b=2;a/=b | a=1;b=2 |
| %= | 模等于(求余) | a=3;b=2;a%=b; | a=1;b=2 |
a+=b ----------- a=a+b
a-=b ------------a=a-b
#include条件运算符与条件表达式int main() { int a=5; int b=(a=5); printf("%dn",b); int x,y,z; x=y=z=6; printf("老铁:%d%d%dn",x,y,z); int d=1; d+=1313;//d=d+1313 printf("%d",d); } //运行结果: 5 老铁:666 1314
当编写程序时,往往会遇到条件判断
例如:判断a>b,当a>b成立时执行某一个操作,当a>b不成立时执行另外一个操作
表达式1? 表达式2 : 表达式3 #include位运算符int main() { int a = 10; int b = 20; int max = 0; max = (a > b ? a : b);//与下面的语句效果意义 return 0; }
位运算符位( bit ) 是计算机中表示信息的最小单位,一般用 0和 1表示。位运算符是对其操作数按其二进制形式逐位进行运算。
sizeof运算符C语言中提供了sizeof运算符,获取某一数据或者数据类型在内存中所占的字节数
格式
sizeof(类型说明符) sizeof 表达式
#include运算优先级typedef struct Worke { char name[10]; int age; long ID; float height; double weight; }worker_t; int main() { printf("char :%lun", sizeof( char)); printf("int :%lun", sizeof(int)); printf("long :%lun", sizeof(long)); printf("float :%lun", sizeof(float)); printf("double :%lun", sizeof(double)); printf("worker_t:%lun", sizeof(worker_t)); printf("1+2 :%lun", sizeof(1+ 2)); printf("1+2.5 :%lun", sizeof(1+2.5)); printf("n"); return 0; } char :1 int :4 long :4 float :4 double :8 worker_t:32 1+2 :4 1+2.5 :8
C语言的运算符包括单目运算符、双目运算符、三目运算符,优先级如下:
- 第1优先级:各种括括号,如()、[]等、成员运算符 . ;
- 第2优先级:所有单目运算符,如++、–、!、~等;
- 第3优先级(算数运算符):乘法运算符*、除法运算符/、求余运算符%
- 第4优先级(算数运算符):加法运算符+、减法运算符-;
- 第5优先级(移位运算符):移位运算符<<、>>;
- 第6优先级(条件运算符):大于运算符>、大于等于运算符>=、小于运算符<、小于等于运算符<=;
- 第7优先级(条件运算符):等于运算符==、不等于运算符!=;
- 第8优先级(按位运算符):按位与运算符&;
- 第9优先级(按位运算符):按位异或运算符^;
- 第10优先级(按位运算符):按位或运算符|;
- 第11优先级(逻辑与运算符):逻辑与运算符&&;
- 第12优先级逻辑与运算符:逻辑或运算符||;
- 第13优先级:三目条件运算符 ?: ;
- 第14优先级:各种赋值运算符,如=、+=、-=、*=、/= 等;
- 第15优先级:逗号运算, 。
算数运算符>移位运算符>条件运算符>按位运算符>逻辑运算符>赋值
//代码在博客凡仕咖啡看到的 //运算符优先级(没有涉及到复杂的)示例: #includemain() { int a = 20; int b = 10; int c = 15; int d = 5; int e; e = (a + b) * c / d; // ( 30 * 15 ) / 5 printf("Value of (a + b) * c / d is : %dn", e ); e = ((a + b) * c) / d; // (30 * 15 ) / 5 printf("Value of ((a + b) * c) / d is : %dn" , e ); e = (a + b) * (c / d); // (30) * (15/5) printf("Value of (a + b) * (c / d) is : %dn", e ); e = a + (b * c) / d; // 20 + (150/5) printf("Value of a + (b * c) / d is : %dn" , e ); return 0;} //运行结果: Value of (a + b) * c / d is : 90 Value of ((a + b) * c) / d is : 90 Value of (a + b) * (c / d) is : 90 Value of a + (b * c) / d is : 50
| 从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你! |
如果又出错的,请各位友友指正。
新人报到,各位友友们,给我个三联(点赞,关注,收藏)



