优秀的编程知识分享平台

网站首页 > 技术文章 正文

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

nanyue 2024-07-26 15:38:02 技术文章 15 ℃

在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的连写写法!


对编程感兴趣的小伙伴可以点击下方了解更多,可以免费得到视频资料和在线电子书籍噢~

Tags:

最近发表
标签列表