zoukankan      html  css  js  c++  java
  • 第6讲——运算符

    这一讲,咱们来个运算符大杂烩。

     

    我们不是大牛,只是因为你没付出1W小时的努力,而不是你笨!

    【算术运算符】

    • 优先级高于关系运算符
    •  五种基本算术运算符:+ - * / %
    • 优先级:* / %优先级相同,自左向右结合

    【逻辑运算符】

    • 优先级:! > && > ||
    • &&运算符和||运算符的优先级都低于关系运算符
    • !运算符的优先级高于所有的关系运算符和算术运算符

     

    【?:运算符】

    • 条件运算符
    • 唯一一个需要3个操作数的运算符
    • ?:运算符生成一个表达式,因此是一个值,可以将其赋给变量或将其放到一个更大的表达式中
    • 技巧:将条件表达式嵌套在另一个条件表达式中(增加读程序的复杂性)

    【逗号运算符】

    • 实质上,就是把两个或者多个表达式放一起,会被编译器认为是一个表达式。

    表达式的定义:任何值或任何有效的值和运算符的组成是表达式。

     

    以下不是表达式:

    int a , b ; 其中a,b分别是一个变量,

    我们可以int a; int b; 这样是声明a是int类型,b是int类型。 

    也可以int a, b; 这样是声明a和b都是int类型。

    在这里有点类似 “和” 的意思。——但记住,不是每个都可以这么理解,特别是在输出 表达式的值 的时候

     

    以下是表达式:

    例如在for循环语句里,小括号里面的三个语句,是被分号隔起来的。

    for(i=1;i<5;i++)

    其中i=1、i<5和i++都是表达式。

    这三个表达式,也可以用逗号运算符。

    上代码:

    #include<iostream>
    using namespace std;
    int main()
    {
    	int a,b;
    	for (a=1,b=3;a<2,b<6;a++,b++)
    	{
    		cout << "第" << a << "遍循环" << endl;
    		cout << a << endl;
    		cout << b << endl;
    	}
    	cout << "循环已经结束" << endl;
    	cout << a << endl;
    	cout << b << endl;
    	return 0;
    }
    

    执行程序:

    问题:

    ①从结果来看,结束循环是因为b不小于6,而不是a<2。

    即:逗号前的判断 未满足 并没有影响到判断,逗号后的判断 未满足 ,循环结束。即a<2并没有影响结果。

    ——这里有一种猜想,是不是因为两个表达式都不满足后,循环结束。至少满足一个表达式,循环继续进行。

    然而,在测试中被否决,在另外一个for中,第一个表达式满足,第二个表达式不满足,循环结束。——即只有一个表达式不满足,但循环依然结束。

    另外,在之前,我们分析到for语句的判断语句,是将表达式转为bool类型,满足值为1,不满足值为0,当值为0时结束判断语句。

     最后发现:

    第一个表达式是否满足,并不影响循环执行;

    若第二个表达式的值为false,则循环停止。

     ②因此,逗号运算符,在for循环判断语句的时候,不能理解为“和”,这就涉及到,由逗号运算符连接多个表达式一起的话,这个表达式的值为什么。

    见下一部分。

     

    逗号前后多个表达式的值(表达式的值):

    假如逗号将两个表达式连接在一起,如a<3,b<4;

    那么这个表达式的值为多少?

    上代码:

    #include<iostream>
    int main()
    {
    	using namespace std;
    	int a = 1, b = 5, c;
    	cout.setf(ios_base::boolalpha);
    	cout << "(a < 4, b>6) = " << (a < 4, b>6) << endl;	//逗号前a<4是true,逗号后b>6是flase
    	cout << "(a = 3, b = 9) = " << (a = 3, b = 9) << endl;
    	cout << "a = " << a << endl;
    	cout << "b = " << b << endl;
    	cout << "(a = 3, b = 9 , c=5 ) = " << (a = 3, b = 9, c = 5) << endl;
    	return 0;
    }
    

    执行程序:

    结论:

    ①有逗号参与的多个表达式,他们的值永远表现的是最后一个表达式的值。

    ②因此,在for循环语句的判断语句中,是否执行循环,判断的是最后一个表达式的值是true还是false。

    ③变量名=30这种形式的表达式,值为30。

  • 相关阅读:
    Linux下select调用引发的血案
    http://www.regexlab.com/zh/regref.htm
    TPL: 一个新的C++正则表达式(regex)库
    Kerneloops为Linux用户与开发人员搭建“oops”报告提交桥梁
    LINUX同步软件rsync原理
    Oops错误
    C03Java同步实践加强班第9周上机任务
    C03Java同步实践加强班第8周上机任务
    关于读书:读XX书是否为时过早,是否有意义
    C++程序设计第八周上机实践项目
  • 原文地址:https://www.cnblogs.com/xzxl/p/7375267.html
Copyright © 2011-2022 走看看