【计算机408学习笔记】C语言(初级)03运算符与表达式

03运算符与表达式

一、课时2作业
  • leetcode考研时不需要刷,校招时需要
  • 编译分为警告和错误,警告可以忽略
二、算数运算符与关系运算符
1.运算符分类
  • C语言提供了13种类型的运算符,黑色字体部分在初级阶段学习。
2.算数运算符及算数表达式
  • +、-、*、/、%
  • 先进行乘、除、取余(取模),后进行加减。
  • 除%运算符外,其余几种运算符既适用于浮点数又适用于整型数。
  • 当操作符/的两个操作数都是整型数时,它执行整除运算,在其他情况下执行浮点型数除法。
  • %接收两个整型操作数,将左操作数除以右操作数,返回值是余数而不是商。
  • 由算数运算符组成的式子成为算数表达式,表达式一定有一个值。
  • 例子
#include <stdio.h>

int main() {
    int result=4+5*2-6/3+10%4;
    printf("result=%d\n",result);
    return 0;
}
  • 结果
result=14
3.关系运算符与关系表达式
  • 关系运算符:>大于、<小于、==是否等于、>=大于等于、<=小于等于、!=不等于。
  • 由关系运算符组成的表达式称为关系表达式。
  • 关系表达式的值只有真和假,对应的值为1和0。0代表假,非0即为真。
  • 关系运算符的优先级低于算术运算符。
  • 判断整型变量i是否等于3时可以写为3==i,即把常量写在前面而把变量写在后面。
  • 判断三个数是否相等,不能写5==5==5(5==5的结果为1,1==5的结果为0)。
  • 判断三个变量a、b、c是否相等,不能写为a==b==c,而应该写为a==b&&b==c。
  • 例子
#include <stdio.h>

int main() {
    int a;
    while(scanf("%d",&a))
    {
        if(3<a<10)//无论a的值为多少,这个表达式的值始终为真。
        {
            printf("a is between 3 and 10\n");
        }else{
            printf("Ha is not between 3 and 10\n");
        }
    }

    return 0;
}
  • 结果
5
a is between 3 and 10
90
a is between 3 and 10
4.运算符优先级表(重要)
三、逻辑运算符与赋值运算符
1.逻辑运算符与逻辑表达式
  • 逻辑运算符:逻辑非!、逻辑与&&、逻辑或||。
  • 逻辑非的优先级高于算术运算符,逻辑与和逻辑或的优先级低于关系运算符。
  • 逻辑表达式的值只有真1和假0。
  • 例子
#include <stdio.h>
//普通闰年:能被4整除但不能被100整除的年份为普通闰年。
//世纪闰年:能被400整除的为世纪闰年。
int main() {
    int year;
    while(scanf("%d",&year))
    {
        if(year%4==0 && year%100!=0 || year%400==0)
        {
            printf("%d is leap year\n",year);
        }else{
            printf(%d is not leap year\n",year);
        }
    }
    return 0;
}
  • 结果
1000
1000 is not leap year
2000
2000 is leap year
2001
2001 is not leap year
m//退出
  • 例子
#include <stdio.h>

int main() {
    int i,j=1;
    i=!!j;//自又至左结合,!j=0,!!j=1
    printf("i is %d\n",i);
    return 0;
}
  • 结果
i is 1
  • 短路运算:逻辑与和逻辑或存在。
  • 逻辑与短路运算,当前面一个表达式为假时,后面的表达式不会得到执行。
  • 逻辑或短路运算,当前面一个表达式为真时,后面的表达式不会得到执行。
  • 例子
#include <stdio.h>


int main() {
    int i=0;
    i && printf("You can't see me\n");
    i || printf("You can see me\n");
    return 0;
}
  • 结果
You can see me
2.赋值运算符
  • 左值是那些能够出现在赋值符号左边的东西,右值是那些可以出现在赋值符号右边的东西。(区别左操作数和右操作数)
  • 左值必须是变量。b+25=a错误,因为b+25并未标识一个特定的位置(并不对应特定的内存空间)。
  • 例子
#include <stdio.h>

int main() {
    int a=1,b=2;
    b+25=a;
    return 0;
}
  • 结果
error: lvalue required as left operand of assignment
     b+25=a;
         ^
  • 复合赋值运算符:+=、-=、*=、/=、%=。i=i+5;可以写为i+=5;
  • 复合赋值运算符简化了程序,可以使程序精炼、提升月度速度;复合赋值运算符提高了编译效率。
  • 例子
#include <stdio.h>

int main() {
    int a=1,b=2;
    a+=10;
    b*=2;
    printf("a is %d,b is %d\n",a,b);
    return 0;
}
  • 结果
a is 11,b is 4
3.求字节运算符sizeof
  • 注意:sizeof不是函数,是运算符。
  • 用于求常量或变量所占用的空间大小。
  • 例子
#include <stdio.h>

int main() {
    int i=0;
    printf("i size is %d\n",sizeof(i));
    return 0;
}
  • 结果
i size is 4
  • 23
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

废柴老妈

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

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

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

打赏作者

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

抵扣说明:

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

余额充值