c语言入门(五)--运算符

1.算术运算符( + - * / % ) --算术表大式
加 减 乘 除 取余
[%] 只能运载整型
[/] 如果 左操作数 和 右操作数 都是整型时,执行整除运算

#include <stdio.h>
// 算术运算符
void main(){
    int result = 4+5*2-6/3+11%4;
    printf("result = %d" result) // 输出 15
}

 2. 关系运算符( > < == >= <= != )
大于、小于、等于、大于等于、小于等于、不等于,关系表达式的值只有真(1)和假(0),c语言中没有布尔型
3>4为假 5>3为真
[关系运算符优先级低于算术运算符]

#include <stdio.h>
void main(){
        int i;
        while(scanf("%d",&i)){ //while是循环,之后讲
        // i>3&&i<10 表示的是 3<i<10
        if(i>3&&i<10){  // if-else 判断条件,之后讲
            printf("a is between 3 and 10\n");
        }else{
            printf("a isn't between 3 and 10\n");
        }
     }
}

3 逻辑运算符( ! && || ) 逻辑非、逻辑与、逻辑或
[逻辑非得优先级高于算术运算符,逻辑与、逻辑或优先级低于关系运算符],只有真和假

#include <stdio.h>
// 例子计算润年
void main(){
    int i=0, j=6;
    while(scanf("%d" &i)){
        if(i%4==0 && i%100!=0 || i%400==0){
            printf("i is leap year\n");
        }else{
            printf("i isn't leap year\n");
        }
    }
    i=!!j; //从右至左运行
    printf("%d", i) // i=1
}

短路运算:

#include <stdio.h>
//短路运算 (逻辑与 和 逻辑或)
void main(){
    int i=0;
    i && printf("you can't see me\n"); //i为假时不会执行逻辑与后的表达式
//    等价于
//    if(i){
//        printf("you can't see me\n");
//    }
    i || printf("you can't see me\n"); //i为假时会执行逻辑或后面的表达式
}

4. 位运算符(<< >> ~ | ^ &),只能用于整型数据进行操作

依次是左移(高位丢弃,低位补0,相当于×2),

右移(低位丢弃,正数高位补0,负数高位补1,相当于÷2),

算术左移和算术右移,逻辑左移和逻辑右移空位都补0

异或(相同的数进行异或时,结果为0,任何数和0进行异或时,结果为其本事)

按位取反(数位上的数1变成0,0变成1),

按位或/按位与(用两个数的每个数为进行与或)

#include <stdio.h>
//短路运算 (逻辑与 和 逻辑或)
void main(){

    short i=5;  // short 两个字节的整型

    short j;

    // 左移
    j=i<<1;
    printf("%d\n",j) // 左移×2,结果位10;

    // 右移
    j=i>>1;
    printf("%d\n",j); // 右移÷2,结果为2;
    short k=-8;
    short m=k>>1;
    printf("%d\n",m); //右移÷2,结果为-4;

    // 右移无符号数
    i=0x8011;
    unsigned short s=0x8011 // 无符号数,只能大于等于0;
    unsigned short r=0;
    j=i>>1; 有符号数右移
    r=s>>1; 对无符号数右移
    printf("r=%d\n",r); // 结果不一样 j=16376  r=16392
    // ------------------------------------------------
    i=5; j=7;
    // 按位与
    printf("i & j=%d\n", i&j); // 5
    // 按位或
    printf("i | j=%d\n", i|j); // 7
    // 按位异或
    printf("i ^ j=%d\n", i^j); // 2
    // 按位取反
    printf("~i=%d\n", ~i); // -6

}

5. 赋值运算符( = 及其扩展赋值运算符 )
必须理解[左值]和[右值],左值:出现在赋值符号左边的东西,只有变量能放在左边,右值:出现在赋值符号右边的东西

#include <stdio.h>
void main(){
    int a=1,b=2;
    // a+25=b // error:lvalue required as left operand of assignment
    b=a+25;
    // 符合赋值运算
    int iNum;
    // iNum = iNum +5;
    // 等价于
    iNum += 5; // 加后赋值 (还有 乘后赋值)
    
}

6. 条件运算符( 表达式 ? 值1 : 值2 )

条件运算符是C语言中唯一的三目运算符,有三个操作数,通过判断问号前的表达式的真假来确定整体表达式的值

#include <stdio.h>

int main(){
    
    int a,b,max;

    scanf(%d%d,&a,&b);

    // 如果a>b,则max=a; 反之 max=b
    max=a>b?a:b;
    
    printf("max=%d",max);    

    return 0;
}

7. 逗号运算符( , )

所有C语言中优先级最低的,逗号表达式的整体值是最后一个表达式的值

#include <stdio.h>

int main(){
    
    int i,j;

    i=10;

    j=1;

    if(i,j-1){ // 不会进入表达式,整体表达式的值是最后一个表达式的值,j-1=0
    
        printf("if excute\n");
    }

    return 0;
}

8. 指针运算符( * & )

9. 求字节数运算符(sizeof) sizeof不是函数,而是一个运算符

#include <stdio.h>
void main(){
    int i=0;
    printf("i size is %d\n",sizeof(i));
}

10.  强转换运算符( (类型) )

11. 分量运算符( . -> )

12. 下标运算符( [] )

13. 其他

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Y_努力_strive

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值