龙华营销型网站建设公司网页视频下载软件免费版

本文主要讲解c语言的基础部分,运算符与表达式的学习,在这一部分中,往往有许多细节的东西需要去记住。当各种运算符一起用时,就会存在优先级的关系,本文末尾有各种运算符的优先级顺序表。
参考书目和推荐学习书目:通过网盘分享的文件:C语言程序设计电子教材 (1).pdf
链接: https://pan.baidu.com/s/1JFqSaCKZ0A2Lr944e72NUA?pwd=p648 提取码: p648
目录
前言
一.算术运算符与算术表达式
1.常见的算数运算符
2.算数表达式
二.赋值运算符与赋值表达式
1.常见赋值运算符
2.赋值语句
3.数据类型转换
Ⅰ.自动转换
Ⅱ.强制转换
三.关系运算符与关系表达式
1.常见关系运算符
四.逻辑运算符与逻辑表达式
1.常见逻辑运算符
五.位运算符与位运算表达式
六.逗号运算符与逗号表达式(最容易被忽略)
七.条件运算符与条件表达式
八.运算符的优先级和结合方向
前言
在程序中对数据进行处理时需要使用到运算符,对数据进行算术运算、赋值、比较等操 作。在 C 语言中,运算符可分为算术运算符、赋值运算符、比较运算符、逻辑运算符和位运 算符。
一.算术运算符与算术表达式
1.常见的算数运算符
|   运算符  |   运算  |   范例  |   结果  | 
|   +  |   正号  |   +3  |   3  | 
|   -  |   负号  |   b=4;-b;  |   -4  | 
|   +  |   加  |   5+5  |   10  | 
|   -  |   减  |   6-3  |   3  | 
|   *  |   乘  |   2*3  |   6  | 
|   /  |   除  |   4/4  |   1  | 
|   %  |   取模(即算术中的求余数)  |   7%4  |   3  | 
|   ++  |   自增(前)  |   a=2;b=++a;  |   a=3;b=3  | 
|   ++  |   自增(后)  |   a=2;b=a++;  |   a=3;b=2  | 
|   - -  |   自减(前)  |   a=2;b=--a;  |   a=1;b=1  | 
|   - -  |   自减(后)  |   a=2;b=a--;  |   a=1;b=2  | 
(1)在进行自增++和自减——运算时,如果运算符++或——放在操作数的前面则是 先自增或自减运算,再进行其他运算。反之,如果运算符放到操作数后面则是先进行其他运 算再进行自增或自减运算。自增和自减运算符只能用于变量,不能用于常量和表达式,如 4++和++(a+b)都是错误的。
(2)在进行除法运算时,当除数和被除数都是整数时,结果也是整数,如 35/10 结果为 3,小数部分被忽略。 思考:2500/1000*1000 结果为 2000。由于表达式执行顺序是从左至右,所以先执行除法再执行乘法 2500/1000,得到结果 2,再乘以 1000,自然得到结果 2000。
(3)取模(%)运算时,运算结果的正负取决于%左面数的符号,与%右面数的符号无 关,如(-5)%3 结果为-2,而 5%(-3)结果为 2。
2.算数表达式
用算术运算符和括号将操作数连接起来的式子称为算术表达式
1+2;
4-3;
a%b;
a×b+2; 
b-2/5; 
二.赋值运算符与赋值表达式
1.常见赋值运算符
|   运算符  |   运算  |   范例  |   结果  | 
|   =  |   赋值  |   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;  | 
2.赋值语句
在赋值过程中,从右往左运算,将右边表达式的结果赋值给左边的变量
3.数据类型转换
数据类型转换是把数据从一种类型转成另一种类型,可分为自动类型转换和强制转换
Ⅰ.自动转换
自动类型转换指在赋值时自动完成类型转换,程序不需要做任何显示声明。
在多种数据类型参与的混合运算中,编译器会自动转换数据类型,将参与运算的所 有数据转换为同一种类型后再进行计算。
按数据表示范围从小到大进行,以保证数值的精度。
例如,int 和 long 参与运算时,将 int 类型的数据转换成 long 类型后再进行运算。
所有的浮点运算都以 double 类型进行的,即使运算中只有 f loat 类型,也要先转换为 double 类型,才能进行运算。
char 和 short 参与运算时,自动转换成 int 类型。
注:自动类型转换一般是将数据范围小的可以转换成数据范围大的;但如果反着来就有可能出现数据丢失,从而报错。
Ⅱ.强制转换
强制类型转换也称显示类型转换,指的是两种类型之间通过显示声明进行转换。当两种 类型不兼容,或者目标类型取值范围小于源类型时,需要进行强制转换。
强制类型转换的格式为:
(类型名)表达式
#include <stdio.h> 
int main() 
{ 
//定义 2 个整型变量 Sum、count 赋初值
int sum=148; //总数
int count=7; //数量
double average; //定义 1 个双字节变量 average,用于存放平均数
average=(double)sum /count; //计算平均数后进行强制类型转换存入 average 中
printf("平均数为:%lf\n",average); //输出平均数
return 0; 
}  
 
注:类型转换是临时性的。无论是自动类型转换还是强制类型转换,都只是为了本次运算而 进行的临时性转换,转换结果保存到临时的内存空间,不会改变数据本来的类型或者值
三.关系运算符与关系表达式
关系运算符用于对两个数值或变量进行比较,判断结果是否符合给定条件,结果为 “真”或“假”。
1.常见关系运算符
|   运算符  |   运算  |   范例  |   结果  | 
|   ==  |   等于  |   5==4  |   假  | 
|   !=  |   不等于  |   5!=4  |   真  | 
|   <  |   小于  |   5<4  |   假  | 
|   >  |   大于  |   5>4  |   真  | 
|   <=  |   小于等于  |   5<=4  |   假  | 
|   >=  |   大于等于  |   5>=4  |   真  | 
使用关系运算符时需要注意,不能将运算符“==”误写成赋值运算符“=”。
关系表达式的值是一个布尔类型的逻辑值,即“真”或“假”,真用1代替,假则用0代替
四.逻辑运算符与逻辑表达式
逻辑运算符对布尔型的数据进行操作,其结果仍然布尔型数据。
1.常见逻辑运算符
|   运算符  |   运算  |   范例  |   结果  | 
|     &&  |     与  |   真&&真  |   真  | 
|   真&&假  |   假  | ||
|   假&&真  |   假  | ||
|   假&&假  |   假  | ||
|     ||  |     或  |   真||真  |   真  | 
|   真||假  |   真  | ||
|   假||真  |   真  | ||
|   假||假  |   假  | ||
|    !  |    非  |   !真  |   假  | 
|   !假  |   真  | 
注:C 语言中的与操作又称短路与,如果使用&&进行运算,当左边为假时,右边的表 达式不会进行运算,因此得名短路与。同理,如果使用||进行运算,当左边为真时,右边 的表达式不会进行运算,因此得名短路或。
五.位运算符与位运算表达式
位运算符是针对二进制数的每一位进行运算的符号,专门针对数字 0 和 1 进行操作的。
1.常见位运算符
|   运算符  |   运算  |   范例  |   结果  | 
|     &  |     按位与  |   0&0  |   0  | 
|   0&1  |   0  | ||
|   1&1  |   1  | ||
|   1&0  |   0  | 
|     |  |     按位或  |   0|0  |   0  | 
|   0|1  |   1  | ||
|   1|1  |   1  | ||
|   1|0  |   1  | ||
|    ~  |    按位取反  |   ~0  |   1  | 
|   ~1  |   0  | ||
|     ^  |     按位异或  |   0^0  |   0  | 
|   0^1  |   1  | ||
|   1^1  |   0  | ||
|   1^0  |   1  | ||
|   <<  |   左移  | ||
|   >>  |   右移  | ||
位运算符<<将将操作数的各个二进制位全部左移若干位,左边移出的位丢失,右边 补 0。
11<<2 表示将 11 的各二进制位左移 2 位,计算过程如下:
解: (<<) 0000000000001011
0000000000101100
运算结果为 0000000000101100,对应数值为 44。
六.逗号运算符与逗号表达式(最容易被忽略)
在 C 语言中逗号“,”也作为运算符使用,它的功能为连接多个表达式构成一个表达 式,含有“,”的表达式称为逗号表达式。
逗号表达式的一般形式如下: 表达式 1,表达式 2,表达式 3,……,
表达式 n 逗号表达式的值为依次求解所有表达式,即上式中先求表达式 1,再求表达式 2,……,最后求解到表达式 n。整个表达式的值为表达式 n 的值。
注意:逗号运算符在所有运算符中优先级最低。在 C 语言代码中出现的逗号,不一定就是逗号运算符。函数参数间的逗号和在定义 变量时的逗号都不是,而是分隔符。使用逗号表达式一般不是要求最后表达式的值,而 是想分别得到各个表达式的值。
七.条件运算符与条件表达式
条件运算符是 C 语言中唯一的三目运算符,它的一般形式如下:
表达式 1?表达式 2:表达式 3
具体过程为:先计算表达式 1 的值,若为真(非 0),则计算表达式 2,整个表达式的值 为表达式 2 的值;若表达式 1 的值为假(0),则计算表达式 3 的值,整个表达式的值为表达 式 3 的值。
八.运算符的优先级和结合方向
|   优先级  |   运算符  |   结合方向  |   含义  |   使用形式  |   说明  | 
|     1 (最高)  |   ( )  |     自左至右  |   圆括号运算符  |   (表达式) 或 函数名(参数表)  | |
|   [ ]  |   数组下标运算符  |   数组名[常量表达式]  | |||
|   ·  |   结构体成员运算符  |   结构体变量.成员名  | |||
|   ->  |   指向结构体成员运算符  |   结构体指针变量->成员名  | |||
|         2  |   !  |         自右至左  |   逻辑非运算符  |   !表达式  |        单目 运算  | 
|   ~  |   按位取反运算符  |   ~表达式  | |||
|   +  |   求正运算符  |   +表达式  | |||
|   -  |   负号运算符  |   -表达式  | |||
|   ++  |   自增运算符  |   ++变量 或 变量++  | |||
|   --  |   自减运算符  |   --变量 或 变量--  | |||
|   (类型)  |   强制类型转换运算符  |   (数据类型)表达式  | |||
|   *  |   间接(取值)运算符  |   *指针变量  | |||
|   &  |   取地址运算符  |   &变量  | |||
|   sizeof  |   求所占字节数运算符  |   sizeof(表达式)或sizeof(类型)  | |||
|    3  |   *  |          自左至右  |   乘法运算符  |   表达式1*表达式2  |          双目 运算  | 
|   /  |   除法运算符  |   表达式1/表达式2  | |||
|   %  |   求余运算符  |   整型表达式1%整型表达式2  | |||
|    4  |   +  |   加法运算符  |   表达式1+表达式2  | ||
|   -  |   减法运算符  |   表达式1-表达式2  | |||
|    5  |   <<  |   左移位运算符  |   变量<<表达式  | ||
|   >>  |   右移位运算符  |   变量>>表达式  | |||
|     6  |   >  |   大于运算符  |   表达式1>表达式2  | ||
|   >=  |   大于等于运算符  |   表达式1>=表达式2  | |||
|   <  |   小于运算符  |   表达式1<表达式2  | |||
|   <=  |   小于等于运算符  |   表达式1<=表达式2  | |||
|    7  |   ==  |   等于运算符  |   表达式1==表达式2  | ||
|   !=  |   不等于运算符  |   表达式1!=表达式2  | 
|   8  |   &  |      自左至右  |   按位与运算符  |   表达式1&表达式2  | |
|   9  |   ^  |   按位异或运算符  |   表达式1^表达式2  | ||
|   10  |   |  |   按位或运算符  |   表达式1|表达式2  | ||
|   11  |   &&  |   逻辑与运算符  |   表达式1&&表达式2  | ||
|   12  |   ||  |   逻辑或运算符  |   表达式1||表达式2  | ||
|    13  |    ?:  |    自右至左  |    条件运算符  |    表达式1?表达式2:表达式3  | |
|         14  |   =  |         自右至左  |   赋值运算符  |   变量=表达式  |         双目 运算  | 
|   +=  |   加后赋值运算符  |   变量+=表达式  | |||
|   -=  |   减后赋值运算符  |   变量-=表达式  | |||
|   *=  |   乘后赋值运算符  |   变量*=表达式  | |||
|   /=  |   除后赋值运算符  |   变量/=表达式  | |||
|   %=  |   求余后赋值运算符  |   变量%=表达式  | |||
|   &=  |   按位与后赋值运算符  |   变量&=表达式  | |||
|   ^=  |   按位异或后赋值运算符  |   变量^=表达式  | |||
|   |=  |   按位或后赋值运算符  |   变量|=表达式  | |||
|   <<=  |   左移后赋值运算符  |   变量<<=表达式  | |||
|   >>=  |   右移后赋值运算符  |   变量>>=表达式  | |||
|   15 (最低)  |    ,  |    自左至右  |   逗号运算符(从左向右顺序计算 各表达式的值)  |    表达式1,表达式2,…,表达式n  | 
————由于博主还是大三的在读生,时间有限,每天会不定时更新一些学习经验和一些32的项目,如果喜欢就点点关注吧,大佬们!!!!————
