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));     } 
原创粉丝点击