C--模块四--运算符与表达式
来源:互联网 发布:输出素数的c语言程序 编辑:程序博客网 时间:2024/06/06 12:46
一,算术运算符
内容:+-*\’\’\%++–+(取正)-(取负)
注意:
(1)除:如果相处除的两个数均为正数 ,结果只取整数商;如果有一个是实数,则结果为double型实数
(2)取余:左右操作数必须为整数;余数的符号与被除数相同;求余运算只适合于整形数据,字符型数据,指针类型
eg:12%(-5)=2
(3)自增自减:只能与变量结合使用
前缀自增:++a:a的值先增加一,再使用
后缀自增:a++:a的值先使用,再将a的值增加1
前缀自减:–a:a的值先减小1,再使用
后缀自减:a–:a的值先使用,再将a的值减小1
eg:
源代码:
#include<stdio.h>int main(){ int i,j,k; i=2; j=i++; k=++i; printf("%d,%d\n",(j*k),j--*--k);//? }
二,算术表达式
运算对象:常量,变量,函数
1,赋值运算
(1)复合赋值运算符(双目、左结合(自右向左)):+=、-=、*=、/=、%=
eg;a+=b即就是a=a+b
eg:
源代码:
#include<stdio.h> int main() { int a,b; a=10; b=5; a/=b--; //a=a/(b--) b+=b*=b; //b=b+b=b*b printf("%d,%d\n",a,b); }
2,赋值表达式
格式:变量 赋值运算符 表达式
注意:赋值表达式的左边必须是变量;赋值运算表达式的后面不能加分号,否则为赋值语句
三,关系运算符:常用于选择结构,循环结构中的条件判断
1,结合性:自左向右
2,关系运算符:<,<=,>,>=,==,!=
3,操作数:整形、实型、字符型、表达式
注意:对于浮点数来说,不可以用==、!=进行关系运算,因为浮点数有一定的精度,数值的小数部分在内存保存时可能是近似值而非准确值
四,逻辑运算符
1,内容:&&(自左向右)、||(自左向右)、!(自右向左)
2,逻辑表达式,运算结果是一个逻辑值
eg:
源代码:
#include <stdio.h> int main() { char a,b; int c,d,e,f; a='a'; b='A'; c=36; d=a>b&&b+c; //(a>b)&&(b+c) e=a>b||b<c; //(a>b)||(b<c) f=!(a+b)&&b-c&&a-b>c; //(!(a+c))&&(b-c)&&(a-b>c) !(a+c) a+c=97 !97的逻辑值为0 printf("%d,%d,%d\n",d,e,f); }
五,条件运算
1,C语言中的唯一三目运算符;自右向左
2,格式:表达式1?表达式2:表达式3
eg:
a?b:c 如果a的逻辑值为真,计算b,生成该操作的结果;如果a的逻辑值为假,计算c,生成该操作的结果
注意:表达式1可以是任何类型的任何表达式,表达式2和表达式3可以是类型相同的任何表达式;当一个式子中出现多个条件表达式时,应该将位于最右边的“?”与右边离他最近的“:”配对,即自右向左结合
3,应用:表示程序的判断和选择
eg:实现大小写字母的转换
源代码:
#include<stdio.h> int main() { char ch1,ch2; ch1=getchar(); ch2=(ch1>='A'&&ch1<='Z')?ch1+32:ch2-32; printf("%c",ch2);//? }
eg:
编写程序实现y值的求解 y=-1(x<0) y=0 (x=0) y=1(x>0)
源代码1:
#include <stdio.h> int main() { int x,y; printf("输入x的值:\n"); scanf("%d",&x); y=(x>0)?1:x==0?0:-1; printf("%d\n",y); }
等价于
源代码2:
#include <stdio.h> int main() { int x,y; printf("输入x的值:\n"); scanf("%d",&x); if(x>0) y=1; else if(x==0) y=0; else y=-1; printf("%d\n",y); }
六,逗号运算
1,逗号运算符‘,’
2,双目运算符
3,逗号表达式
格式:表达式1,表达式2
注意:
(1)从左向右顺序求解,即就是先对表达式1求解,然后对表达式2求解,两个表达式的求解时分开进行的,相互之间没有运算
(2)逗号表达式的运算结果是最后一个表达式的值
(3)逗号表达式可以嵌套
eg:
源代码:
#include <stdio.h> int main() { int a,b; a=15; b=(a*4,a+5); //a+5的值覆盖a*4的值,并将其的值赋给b printf("b=%d\n",b); }
eg:
源代码:
#include <stdio.h> int main() { int a=3,b,c; b=(a++,c=2*a); printf("a=%d,b=%d,c=%d\n",a,b,c); }
七,长度运算符:由一个关键字sizeof表示,用于计算数据类型所占用的字节数
1,一般格式:sizeof(数据类型)
注意:
返回值是一个整型值
2,参数可以是数据类型名,也可以是这些数据类型的常量,变量,也可以是定构造类型,如;数组名,结构体变量,共用体变量
eg:
源代码:
#include <stdio.h> int main() { int a; unsigned u; float f; printf("a=%d\n",sizeof(a)); printf("u=%d\n",sizeof(u)); printf("f=%d\n",sizeof(f)); printf("char=%d\n",sizeof(char)); }
- C--模块四--运算符与表达式
- C 运算符与表达式
- C语言学习之路之四-----------C语言的运算符与表达式
- C语言学习笔记(四)--运算符与表达式(下)
- C中的运算符与表达式(一)
- C语言基础-----运算符与表达式
- C语言数据类型、运算符与表达式
- C语言数据类型,运算符与表达式
- C语言运算符与表达式
- c语言学习----运算符与表达式
- C 碎片三 运算符与表达式
- c语言运算符与表达式
- C语言运算符与表达式
- javascript学习(四)表达式与运算符
- 表达式与运算符
- 运算符与表达式
- 运算符与表达式
- 运算符与表达式
- 数据结构:线性表之链式表实战演练
- 雪碧图rem手机完美自适应(包括解决因为rem误差导致的图片显示不全)
- leetcode-40. Combination Sum II
- [LeetCode]27. Remove Element
- Cube Stacking(POJ-1988)
- C--模块四--运算符与表达式
- 什么是透传技术
- 在Java(Windows系统)中实现vlc播放器功能
- 2017计蒜之道 初赛 第一场
- 2017 计蒜之道 初赛 第一场
- JAVA 对象引用,以及对象赋值
- DNS在架构设计中的巧用
- chromium can not run as root
- Slim中使用Controller