C--模块四--运算符与表达式

一,算术运算符
内容:+-*\’\’\%++–+(取正)-(取负)
注意
(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));
     } 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值