C/C++学习笔记:基本运算符和表达式大全,案例演示详解

本文详细介绍了C/C++中的运算符,包括赋值、算数、关系、逻辑、条件、位和逗号运算符,以及它们的使用规则和示例。特别强调了赋值运算符的自动类型转换和强制类型转化,逻辑运算符的短路现象,以及条件运算符的用法。此外,还提醒读者注意避免在逻辑表达式中使用连写写法,如1<=x<10。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在C语言中,我们学习过:

  • 算数运算符(+、-、*、/、%)
  • 自增自减运算符(++、--)
  • 赋值运算符(=)
  • 关系运算符(>、< 、>=、<=、!=、==)
  • 逻辑运算符(&&、||、!)

我们再简单复习一下!

运算符

一、什么是表达式

用运算符和操作数连接起来的式子,包括:简单的表达式和复杂表达式

二、什么是语句

结尾的表达式就是一个语句

C语句 :每一个语句都是;作为结束

空语句:什么内容也没有直接以分号结束;

语句块:用花括号括起来的{}

三、运算符

1、赋值运算符(=)

变量名 = 常量(变量/表达式)

左值:出现在赋值语句的左边 左值(常量不能够作为左值)

右值:出现在赋值语句的右边 右值

初始化:在声明一个变量的时候,为他赋一个初始值

赋值:给定一个值

A、自动类型转换

转换规则:

如果把较短的数值类型变量的值赋值给比较长的数值类型的变量,那么较短的数值类型变量的值就会升级表示为较长的数据类型,数据信息不会丢失。

如果较长的数值类型的变量赋值给较短的数值类型变量,那么数据就会降低级别表示,并且数据超过较短的数值类型的可以表示范围,就会发生数据截断。

B、强制类型转化

如果数据类型不同,就会根据不同情况自动进行类型转化,编译器会提示警告的信息,如果使用强制类型转化,编译器不会发生警告提示。

一般形式:(类型名)(表达式)

2、算数运算符

单目运算符:+ 、- 、++、--

双目运算符:+  -  *  /  %(取模运算符 求余数)(两边的操作数只能是整数,余数符号根据被除数来确定)

单目运算符  ++ --   +  -

表达式  ++在前 先自增 在赋值

        ++在后 先赋值 在自增

优先级,结合性

* /

+ -

=

3、关系运算符

 用于判断两个操作数的大小关系(返回真值 或 假值)

0表示假值 非零表示真(-1,-2,1,2)用1表示真

>

>=

<

<=

==

!=

4、逻辑运算符

&& 逻辑与   两个为真 为真,有一个为假,为假

|| 逻辑或 有一个为真 为真,

!  逻辑非 是真 为假 ,是假,为真

短路现象

if ((a=0) && (b=45))
{
//为假就不会执行,为真才执行
printf("真的\n");
}
else
{
//为假
printf("假的\n");
printf("a=%d,b=%d\n",a,b);
}
 
if ((a=45) || (b=2))
{
//为假就不会执行,为真才执行
printf("真的\n");
printf("a=%d,b=%d\n",a,b);//a=45,b=0
}
else
{
//为假
printf("假的\n");
printf("a=%d,b=%d\n",a,b);
}

5、条件运算符(三目运算符)

?:

表达式 ? 语句1 : 语句2

如果表达式为真,就执行语句1

为假,执行语句2

嵌套:1 > 2 ? printf("是真的\n") : 2 > 3?printf("2 > 3\n") :printf("2 < 3 \n");

 

//if else语句

如果

....

否则

....

6、位运算符

  • & 按位与
  • | 按位或
  • ^ 按位异或 相同为0,不同为1
  • ~ 按位取反
  •  源码
  • 反码
  • 补码 
  • 正数:三码合一
  • 负数:反码:符号位不变,其余位按位取反
  • 补码:符号位不变,反码+1

7、逗号运算符:

可以用逗号将多个表达式分隔开,整个表达式的值是最后一个表达式的值。

8、复合运算符

 += 、-=、*= 、/=、%= 、^= 、|=等等 

由于知识语法基本没有发生变化,本部分内容我们将重点用实际程序演示的方式进行

 拆分位数,我们可以C++如下实现:

#include<iostream>
using namespace std;
int main()
{
    int a;//待判断的这个三位数
    int ge;//三位数中的个位
    int shi;//三位数中的十位
    int bai;//三位数中的百位
    cin>>a;
    ge = a%10;
    shi = a%100/10;
    bai = a/100;
    cout<<ge<<" "<<shi<<" "<<bai<<endl;
    return 0;
}

#include<iostream>
using namespace std;
int main()
{
   int x,y;
   cin>>x;
   if(x<1)
   {
      y=x;
   }
   else if(1<=x && x<10)
   {
      y=2*x-1;
   }
   else
   {
      y=3*x-11;
   }
   cout<<y<<endl;
   return 0;
}

运行结果如下:

 

 

大家依旧注意逻辑运算符&&的使用场景,千万不要出现类似1<=x<10的连写写法!

对编程感兴趣的小伙伴可以点击了解更多,或加裙:①①⑤①③⑨⑤⑨⑦⑨,可以免费得到视频资料和在线电子书籍噢~还有编程大牛在线答疑,定期免费公开课噢

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值