4.运算符与表达式

2018-09-22  本文已影响68人  luowenbin

变量 与 变量或常量 可以进行运算 组成表达式。

一、算术运算符

运算符 含义
+
-
*
/
% 取余
++ 自增
-- 自减

1.基本算术运算

前5个基本含义和数学上相同
不同的是:
整型除以整型结果还是整型,小数部分直接去掉
5/2的结果是2,不是2.5,也不是3
想要得到小数部分就要用 浮点型
5.0/2.0 的结果才是2.5

#include <stdio.h>
int main() {
    int a = 100;
    int b = 6;
    printf("a + b == %d\n", a+b );
    printf("a - b == %d\n", a-b );
    printf("a * b == %d\n", a*b );
    printf("a / b == %d\n", a/b );
    printf("a %% b == %d\n", a%b );//输出%要用%%
    return 0;
}

2.自增自减运算

自增与自减同理,所以这里只说自增。

变量的自增运算就是变量本身+1
单独使用时这4条语句是一样的:
++a;a++;a=a+1;a+=1;(a为变量)
混和其他运算符一起使用时有区别:
前置:++a 先自增再运算
后置:a++先运算再自增
例如:
c=++a;等价于a++; c=a; //自增;赋值;
c=a++;等价于c=a; a++; //赋值;自增;

#include <stdio.h>

int main() {
    int a = 100;
    int b = 6;
    int c=0;

    printf("自增自减(单独作为语句使用)\n");
    printf("a == %d  b == %d\n", a,b );

    a++;
    b--;
    printf("a == %d  b == %d\n", a,b );

    printf("\n\n");

    printf("自增自减(嵌套使用)\n");
    printf("a == %d\n", a );
    c=a++;//先赋值a的值给c,a再自增,所以c的是自增前的a
    printf("c == %d,a==%d\n", c,a);
    c=++a;//a先自增,再赋值a的值给c,所以c的是自增后的a
    printf("c == %d,a==%d\n", c,a);

    return 0;
}

二、赋值运算符

运算符 含义 举例
= 赋值 i=5;表示 设置变量i的值为5
+= 相加后赋值 i+=5;等同于i=i+5
-= 相减后赋值 i-=5;等同于i=i-5
*= 相乘后赋值 i*=5;等同于i=i*5
/= 相除后赋值 i/=5;等同于i=i/5
%= 取余后赋值 i%=5;等同于i=i%5

三、关系运算符

关系运算符的运算结果只有两种 1(代表真)和 0(代表假)

运算符 含义 举例
== 是否相等 5==5的结果为1
!= 是否不等 5!=5的结果为0
> 是否大于 6>5的结果为1
< 是否小于 6<5的结果为0
>= 是否大于或等于 4>=5的结果为0
<= 是否小于或等于 4<=5的结果为1

注意区分===,分别是 赋值 和 比较是否相等。


#include<stdio.h>
int main() {
    int a=0,b=999,c;
    printf("%d\n",4>5);//0
    printf("%d\n",6>5);//1

    printf("%d\n",a>=0);//1
    printf("%d\n",a!=b);//1
    c= (6>5);
    printf("%d\n",c);//1
    c= (b==999);
    printf("%d\n",c);//1

    return 0;
}

四、逻辑运算符

运算符 含义 举例
| | :有一个为真,运算结果就为真 1||0的值为1
&& :同时为真,运算结果才为真 1&&0的值为0
! :真变成假,假变成真 !0的值为1
#include<stdio.h>
int main() {
    /* 或且非 随便挑一个意思理解
     和数学上集合的 并集,交集,补集 差不多。
     和物理上: “或” 像 开关并联,“且” 像开关串联,也差不多。
    */
    int a=0,b=999,c;
    //判断b是否大于5 或者 a<10 有一个满足 结果就是1 , 一个都不满足 结果就是0
    printf("%d\n",a>5||a<10);//1

    //判断b是否在0到100
    printf("%d\n",b>0&&b<1000);//1

    //判断b是否为0,1,2
    printf("%d\n",b==0||b==1||b==2);//0

    return 0;
}

六、位运算符

数值在计算机中是以二进制存储的。
如 42对应二进制为00101010,其中的每一个1或0 叫做一个

运算符 含义 示例
<< 左移位:将数字的二进制每一个位左移 00101010<<1的值为01010100
>> 右移位:将数字的二进制每一个位右移 00101010<<1的值为00010101
& :两个位为1时,结果位才为1 00101010 & 10101010的值为00101010
| :有一个位为1,结果位就为1 0110 丨1100的值为1110
~ 取反:1变成0,0变成1 ^100的值为011
^ 异或:相同为1,不同为0 0011^1110的值为0010
#include<stdio.h>
int main() {
    int a=0,b=999,c;
    //判断b是否大于5 或者 a<10 有一个满足 结果就是1 , 一个都不满足 结果就是0
    printf("%d\n",a>5||a<10);//1

    //判断b是否在0到100
    printf("%d\n",b>0&&b<1000);//1

    //判断b是否为0,1,2
    printf("%d\n",b==0||b==1||b==2);//0

    return 0;
}

六、运算符嵌套

就是几个运算符组合成一个语句。
就像小学混合四则运算一样。
那么他们运算就有先后顺序
a=b!=4实际上是a = ( b!=4 )也就是先判断b!=4然后再赋值给a
而不是先赋值再判断。

image.png

不想记就尽量把语句拆开用。

下一篇:C语言程序的基本结构

上一篇下一篇

猜你喜欢

热点阅读