C语言学习笔记(三)--运算符与表达式(上)
来源:互联网 发布:淘宝链接咋发 编辑:程序博客网 时间:2024/04/29 21:13
1运算符和表达式
1.1运算符分类:
算数运算符:用于算数运算,包括+、-、*、/等。
关系运算符:用于比较运算,包括>、<、==、!=等。
逻辑运算符:用于逻辑运算,包括&&、||、!三种。
位操作运算符:按二进制位对位运算,包括&、|、~、<<等。
赋值运算符:用于赋值运算,包括=、+=、&=等。
条件运算符:三目运算符,用于条件求值(?:).
逗号运算符:用于把若干表达式组合成一个表达式(,)。
指针运算符:用于取内容*和用于取地址&。
求字节数运算符:用于计算数据类型所占的字节数sizeof。
特殊运算符:()、[]、成员(->,.)等。
1.2运算顺序
A.函数计算优先。
B.其次是强制类型转换。
C.自增、自减和取反次之。
D.先乘除再加减。
E.有括号先算括号内的。
注:表达式中出现连续两个运算符时最好用空格隔开,如a+++b要写成:a++ +b或a+ ++b。
2数据类型转换
2.1强制类型转换:就是显示的将表达式转换成所需类型。
方式1:(类型名)(表达式).
方式2:(类型名)表达式.
例:强制类型转换。
#include "stdio.h"#define PI 3.1415926main(){int m,n;float x,y;x=2.5;y=4.8;m=(int)(x+y);/*强制将浮点型转换成整型*/n=(int)x+m/3;/*强制将x转换成整型*/m=n%4; /*整型取余*/x=x+y;printf("m=%d,n=%d,x=%f,f=%f",m,n,x,y);}
注:强制类型转换不会改变原来的变量和表达式的类型属性,只是转换成所 需类型使用。
2.2隐含类型转换:整型、单精度型和双精度型的不同数值类型可以混合运 算,在运算过程中就有隐式类型转换。
隐式类型转换的规则就是:从低向高转换,例如char和short可以转 换为int。
3算术运算符与算术表达式
3.1基本算术运算符:包括+、-、*、/、%五个运算符。
3.2特殊的算术运算符:自加和自减。
前缀形式:先对运算对象自增或自减,再引用运算对象的值作为表达式 的值。
后缀形式:先引用运算对象的值作为表达式的值,再对运算对象自增或 自减。
示例:++a 等价于a=a+1,--a等价于a=a-1;
a++ 等价于a=a+1,a--等价于a=a-1;
注:可以看出单独使用时没有区别,但是在表达式中对表达式影响不同。
例子代码:
#include "stdio.h"#define PI 3.1415926main(){int i=6,j=6,k=6, h=6,m,n,x,y;m=i++; /*后缀形式自加*/n=++j; /*前缀形式自加*/x=k--; /*后缀形式自减*/y=--h; /*后缀形式自减*/printf("\n i=%d, m=%d, j=%d, n=%d", i, m, j, n);printf("\n k=%d, x=%d, h=%d, y=%d", k, x, h, y);}
4赋值运算符与赋值表达式
4.1简单的赋值运算符
简单赋值的作用就是将一个表达式的值赋给一个变量存储起来,例如a=4;
注:赋值运算的左边必须是变量;
赋值运算优先级比较低,仅优先于,;
4.2复合赋值运算符
就是把运算和赋值结合在一起,例如+=、-=等。
例如:m+=3 等价于 m=m+3;
4.3赋值表达式的运算
使用表达式应该注意的情况:
4.3.1复合的赋值运算符。
例子代码:
#include "stdio.h"#define PI 3.1415926main(){ int x=2,y,z; x*=3+2; /*等价于x=x*(3+2)*/ printf("(1)x=%d\n",x); x*=y=z=4; /*等价于y=z=4,x=x*y*/ printf("(2)x=%d\n",x); x=y=1; z=x++-1; /*等价于y=x-1,x=x-1*/ printf("(3)x=%d***z=%d\n",x,z); z=x++*++y; /*等价于y=y+1,z=x*y,x=x+1*/ printf("(4)x=%d***y=%d***z=%d\n",x,y,z);}
4.3.2赋值转换:指运算符两边类型不同但都是数值或字符,C就会自动转换相应类型。
例子代码:
#include "stdio.h"#define PI 3.1415926main(){ int a,b=322; float x,y=8.88; char c1='k',c2; a=y; x=b; a=c1; c2=b; printf("%d,%f,%d,%c",a,x,a,c2);}
- C语言学习笔记(三)--运算符与表达式(上)
- C语言(三)--运算符与表达式
- C语言学习笔记(四)--运算符与表达式(下)
- (三十)C语言学习笔记(一)——类型、运算符与表达式
- c学习笔记(三)C数据类型与运算符
- C学习笔记(七)运算符与表达式
- c语言学习----运算符与表达式
- C语言学习(三)运算符
- C语言之运算与表达式(笔记六)
- C语言学习笔记(三)——条件表达式
- C语言自学笔记3(运算符、表达式、语句)
- C语言笔记(运算符及表达式)
- iOS开发学习笔记 2-2 C语言部分 类型、运算符与表达式
- C语言学习笔记3-运算符和表达式
- #C语言学习笔记#运算符、表达式和语句
- C语言基础学习(二)--运算符表达式
- C语言笔记1--类型、运算符与表达式
- C语言表达式和运算符(三)
- TC Disrupt北京站首日创业项目盘点
- 实验——系统调用execve时的用户空间堆栈情况
- 深入浅出android/ophone UI实现水平布局的Tab控件
- 笔记
- JConsole连接配置
- C语言学习笔记(三)--运算符与表达式(上)
- 二叉排序树(二叉查找树)的各种操作C++最新实现
- poj 3264 --Balanced Lineup (RMQ或线段树)
- linux下svn命令大全
- java classLoader
- C++程序设计语言--第十二章:派生类
- Multi-View视频序列链接
- jsp的模式对象
- Revit二次开发之ISelectionFilter 接口的用法