c++入门笔记(10)运算符

什么是运算符?

运算符是指可以进行运算操作的符号。
而提供给运算符进行操作的数值我们把它们叫做操作数。所有的操作数由于都可以返回一个值,因此它们都是表达式。
c++有好几类运算符,其中最常用的是:

  • 赋值运算符
  • 数学运算符

赋值运算符

赋值运算符即可以实现对操作数进行赋值的功能。

例:

x = 1;

该语句中”=”实现了将符号右边的1赋给左右的x的目的,因此”=”叫做赋值运算符。


注意:常量都要放在右边,不能放在左边。因为常量是恒定不变的。

错误例子:

1 = x;      //错误例子

数学运算符

数学运算符即可以实现对操作数进行数学运算的功能。

例:

#include <iostream>

int main(){

    int x , y;
    1+2;    //加法运算符
    1-2;    //减法运算符
    1*2;    //乘法运算符
    1/2;    //除法运算符
    1%2;    //求模运算符

    //求模运算符"%"用来求出两个操作数相除之后的余数
    x = 30/20;
    y = 30%20;

    std::cout << "30除以20等于:" << x << "余" << y << std::endl;

    return 0;
}

输出:

30除以20等于:1余10

赋值运算符与数学运算符的联合

+= 加等
-= 减等
*= 乘等
/= 除等
%= 模等
赋值运算符“=”与数学运算符“+ - * / %”联合起来使用,它表示将 右值左值 运算的结果再赋给左值


例:将变量a与一个数值6相加的结果赋给变量a。

#include <iostream>

int main(){

    int a=2,b;
    b = a+6;     //先a+b的结果赋给变量b
    a = b;       //再由变量b赋给变量a
    std::cout << a;

    return 0;
}

输出:

8

此例可以简写为:将变量a与6相加的结果直接再赋给变量a

#include <iostream>

int main(){

    int a=2;
    a = a + 6;      //变量a+6的结果直接赋给变量a
    std::cout << a;

    return 0;
}

输出:

8

还可以更加简写为:使用赋值运算符与数学运算符联合的方法:

#include <iostream>

int main(){

    int a=2;
    a += 6;     //加等 等同于a=a+6;
    std::cout << a;

    return 0;
}

输出:

8

该例将赋值运算符“=”与数学运算符“+”联合起来使用,它表示将右值左值相加的结果再赋给左值
它的作用与a=a+6是相同的。


关糸运算符

关糸运算符用来对两个表达式进行比较,并根据比较结果返回一个真值或者假值。
是真值还是假值取决于使用的关糸运算符。

关糸运算符意义
==等于
!=不等于
<小于
>大于
<=小于等于
>=大于等于

逻辑”与”运算符

逻辑”与”运算符,表示如果运算符两边的条件表达式为真,那么该逻辑表达式方才成立。

关键字:&&

例:

#include <iostream>

int main(){

    int x = 99;
    if(x>1 && x<100){   //x是99,大于1也小于100。该逻辑表达式成立
        std::cout << "x是大于1且小于100的数。\n";
    }
    return 0;
}

输出:

x是大于1且小于100的数。

逻辑”或”运算符

逻辑”或”运算符,它只需要逻辑表达式一边的条件为真,那么整个表达式为真。

关键字:||

例:

#include <iostream>

int main(){

    int x = 0;
    if(x>1 || x<100){   //x是99,小于100。该逻辑表达式成立
        std::cout << "x是一个大于1或小于100的数。\n";
    }
    return 0;
}

输出:

x是一个大于1或小于100的数。

逻辑”非”运算符

逻辑”非”运算符,它只有一个准则,也就是当条件为假时,它才为真。

关键字:”!

例:

#include <iostream>

int main(){

    int x = 0;
    if (!x == 0){       //当x==0条件为真时,取假
        std::cout << "x不等于0\n";
    }
    else{
        std::cout << "x等于0\n";
    }

    return 0;
}

输出:

x等于0

逻辑运算符优先级

在一行语句中出现3个或3个以上的逻辑运算符,就会产生优先级的问题,也就是哪个逻辑运算符先执行,哪个逻辑运算符后执行的问题。

逻辑”与”&& 优先于逻辑”或”||,见例1。

或者直接使用小括号”()”来明确哪个逻辑表达式优先。刚例2。

例1:

#include <iostream>

int main(){
    int x = 1, y = 0, z = 3;
    if(x>1 && y>1 || z>1){  //逻辑与优先于逻辑或
        std::cout << "成立\n";
    }
    else{
        std::cout << "失败\n";
    }

    return 0;
}

输出:重点内容

成立

当int x = 1, y = 0, z = 3;
逻辑表达式中:

x>1 && y>1 || z>1

x>1 && y>1 为假
z>1 为真
假||真
结果为真


例2:使用小括号”()”来确定逻辑”或”先执行。

#include <iostream>

int main(){
    int x = 1, y = 0, z = 3;
    if(x>1 && (y>1 || z>1)){  //使用小括号"()"来确定逻辑"或"先执行。
        std::cout << "成立\n";
    }
    else{
        std::cout << "失败\n";
    }

    return 0;
}

输出:

失败

当int x = 1, y = 0, z = 3;
逻辑表达式中:

x>1 && (y>1 || z>1)

y>1|| z>1 为真
x>1 &&假 为假


运算式的真假关糸

计算机只能分辨0和1,因此所有的数字、符号、字母在计算机看来都只有0和1两种区别,即断电和通电,自然它的逻辑也只有2个,”是”或者”否”。用1来代表”是”,用0代表”否”。

注:空字符’\0’是假值。

c++的语法中,沿用了这种方法,0代表”否”,也就是假,除了0之外的任何数值都为真。因此有时我们也可以看到这样的语句:

例:判断小括号中的数值是真还是假。

#include <iostream>

int main(){

    char a = 'A';
    if(a){
        std::cout << "大写字母A返回的是真值\n";
    }

    return 0;
}

输出:

大写字母A返回的是真值

三目运算符

示例:z = (a>b)?a:b;
如果问号”?”左边的表达式”(a>b)”为真,那么把冒号”:”左边的表达式”a”的值赋给”z”,否则把冒号”:”右边的表达式的值赋给”z”。

三目运算符有三个操作对象,三目运算符通常用于赋值语句之中。
表达式1? 表达式2: 表达式3

关键字:? :

三目运算符嵌套结合方向是从右至左,如:
a>b?a:c>d?c:d;应理解为
a>b?a:(c>d?c:d);

例1:输入两个数,进行对比后输出最大的数

//输入两个数,进行对比后输出最大的数
#include <iostream>
int main(){

    int a, b;
    std::cout << "请输入第1个数:";
    std::cin >> a;

    std::cout << "请输入第2个数:";
    std::cin >> b;

    //两数对比,把最大的数赋给输出。如果a>b那么输出a,否则输出b。
    std::cout << "最大的数是:" << ((a>b)?a:b) << std::endl;

    return 0;
}

输出:输入第1个数为11,输入第2个数为22

请输入第1个数:11
请输入第2个数:22
最大的数是:22

三目运算符的类别

三目运算符允许对不同型别的数值进行操作,例如可以同时操作一个浮点型变量和一个整数变量。

三目运算符会将操作数的值都转化为它们之中最高级别的类型。
如:两个操作数分别是整型和浮点型变量,那么整型变量会被转化为浮点型变量,再对它们进行求值操作,也就是该表达式的值。

例:

#include <iostream>

int main(){
    int a = 1;
    float b = 2.1f; //注意:浮点型数值后面要加f,如不加f会被默认为double型

    std::cout << (a>b?a:b) << std::endl;

    return 0;
}

输出:

2.1

三目运算符在字符型变量中的使用

例:

#include <iostream>

int main(){
    char a;
    std::cout << "请输入一个字母:";
    std::cin >> a;

    std::cout << "你输入的字母小写为:" << (char)(a>='A' && a<='Z'? a+32: a) << std::endl;

    return 0;
}

输出:
输入f:

请输入一个字母:f
你输入的字母小写为:f

输入F:

请输入一个字母:F
你输入的字母小写为:f

(char)(a>='A' && a<='Z'? a+32: a)

判断a是否在大写字母A到Z之间的任意一个字符。如果是则再加32变成小写字母,否则直接输出。
注:在ASCII码中,大小写字符差值是32。
(char):把结果转换为字符型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值