⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 01章 编程简介.txt

📁 C++大学教程txt版中文版 C++大学教程txt版中文版
💻 TXT
📖 第 1 页 / 共 5 页
字号:
         45 

    图1.7内存中的值

    无论何时将新值放入内存地址,这个值将取代该地址中原有的值,并删除前一个值。
运行前面提到的加法程序,当执行下中句时:
    cin>>integer2;
    假设用户输入舋,则计算机将72放在地址integer2中,如图1.8。注意编译器不一定将这两个地址指定为内存中相邻地址。
    程序取得integer1和integer2值后,它将这两个值相加,并将和放在变量sum中。下列语句:
    sum=integer1+integer2;
进行加法运算,同时也删除一个值,即把integer1和integer2的和放进地址sum中时,sum原有的值丢失。计算sum之后,内存如图1.9。注意integer1和integer2的值和计算前一样,虽然这些值在计算机进行计算时使用,但并不删除。因此,从一个内存地址读取数值时,这个过程是非破坏性的。
        integer1
         45 

        integer2
         72 

    图1.8 两个变量值之后的内存值
        integer1
         45 
        integer2
         72 
          sum
         117 

图1.9 计算之后的内存值

1.18 算术运算
    大多数都要进行算术运算。算术运算符见图1.10,注意这里使用了许多代数中没有使用的符号。星号(*)表示乘法、百分号(%)表示求模(modulus)将在稍后介绍。图1.10所示的算术运算符都是二元运算符,即这些运算符取两个操作数。例如,表达式"integer1+integer2"包含二元运算符“+”和两个操作数integer1和integer2。



    C++操作            算术运算符        代数表达式            C++表达式 
    加                    +                f+7                    f+7
    减                    -                p-c                    p-c
    乘                    *                bm                     b*m
    除                    /                x/y或x÷y              x/y
    求模                  %                r mod s                r%s 

                                图1.10 算术运算符
    整除(即除数和被除数均为整数)取得整数结果。例如,表达式7/4得1,表达式17/5得3。注意,整除结果忽略分数部分,不用取整。
    C++提供求模(modulus)运算符“%”即求得整除的余数。求模运算是个整数运算符,只能使用整数操作数。表达式x%y取得x除以y的余数,这样,7%4得3,17%5得2。后面几章将介绍求模运算符许多有趣的应用。如确定一个数是否为另一个数的倍数(确定一个数为奇数或偶数是这个问题的一个特例)。

    常见编程错误 1.4
    对非整型操作数使用求模运算衔是个语法错误。
    C++中的算术运算表达式应以直线形式在计算机中输入。这样,a除以b应输入为"a/b",使所有常量、变量和运算符放在一行中。编译器通常不接受下列代数符号:
    a
    b
但有些特殊专业软件包支持复杂数学表达式更自然的表示方法。
    C++表达式中括号的使用和代数表达式中相同。例如,要将a乘以b+c的和,可以用:
    a*(b+c)
C++中算术运算符的运算顺序是由运算符的优先级规则确定的,与代数中的相同:
1. 括号中的表达式先求值,程序员可以用括号指定运算顺序。括号具有最高优先级,对于嵌套括号,由内存向外层求值。
2. 乘法、除法、求模运算优先。如果表达式中有多个乘法、除法、求模运算,则从左向右求值。乘法、除法、求模的优先级相同。
3. 然后再进行加法和减法。如果表达式中有多个加法和减法,则从左向右求值。加法和减法的优先级相同。

运算符优先级保证C++按正确顺序采用运算符。从左向右求值指的是运算符的结合律(associativity),也有一些运算符结合律是从右向左。图1.11总结 了运算符优先级规则,引入其它C++运算符时,这个表可以扩充,详细的运算符优先级请参见附录。

    运算符            运算            求值顺序         
    ( )               括号            最先求值,如果有嵌套括号,则先求最内层表达式的值,如果
                                      同一层有几对括号,则从左向右求值。
    *、/、或%         乘、除、求模    其次求值。如果有多个,则从左向右求值。
    +或-              加、减          最后求值。如要有多个,则从左向右求值。 

                                    图 1.11 算术运算符优先级

下面用几个表达式说明运算符优先级规则。每个例子都列出代数表达式和对应的C+表达式。
下例求五个值的算术平均值:
                a+b+c+d+e
代数:    m = ------------
                    5
C++:     m = (a+b+c+d+e)/5;

括号是必须的,因为作法的优先级比加法高,要把整个和(a+b+c+d+e)除以5,如果不加括号,则a+b+c+d+e/5的取值为:
    a+b+c+d+(e/5)
下例是直线的方程:
代数: y = mx+b
C++:  y = m*x+b;
不需要括号,乘法优先于加法,因此先乘后加。
    下列包含模(%)、乘、除、加、减运算:
    代数: z = pr%q+w/x-y
     C++: z = p * r % q + w / x - y;
            ⑥   ①  ②  ④ ③  ⑤
语句下面的圆圈数字表示C++采用运算符的顺序。乘法、求模和除法首先从左向右求值(结合律为从左向右)因为它们的优先级高于加法和减法。然后进行加法和减法运算,也是从左向右求值。
    并不是有多对括号的表达式都包含嵌套括号。例如下列表达式不包含嵌套括号:
    a * (b+c)+c*(d+e)
这些括号在同一层。
    要更好地了解运算符优先级规则,考虑二次多项式的求值:
    y = a * x * x + b * x + c;
      ⑥  ①  ②  ④  ③  ⑤
语句下面的圆圈数字表示C++采用运算符的顺序。C++中没有指数运算符,因此我们把x2表示为x*x,稍后会介绍标准库函数pow(数)。由于pow所需要的数据类型有一些特殊情况,因此放第3章再介绍。
    假设变量a、b、c、x初始化如下:a=2,b=3,c=7和x=5。图1.12演示了上述二次多项式的运算符优先级。







    上述赋值语句可以加上多余的括号,使代码更清晰:
    y=(a*x*x)+(b*x)+c;

    编程技巧1.15
    和代数中一样,可以在表达式中加上多余的括号,使代码更清晰,这些括号称为冗余括号。冗余括号常用于组合表达式中的子表达式,使表达式更加清晰。

1.19 判断:相等与关系运算符
    本节介绍简单的C++ if结构,使程序根据某些条件的真假做出判断。如果条件符合,即为真(true),则执行if结构体的语句;如果不符合,即条件为假(false),则不执行语句,稍后将举例说明。
    if结构中的条件可以用相等运算符(equality operator)和关系运算符(relational operator)表示,如图1.13 关系运算符具有相同的优先级,结合律为从左向右。相等运算符的优先级也相同,但低于关系运算符的优先级,结合律也为从左向右。

 标准代数相等与关系运算符    C++相等与关系运算符    C++条件举例    C++条件含义 
 =                            ==                    x==y            x等于y
 ≠                           !=                    x!=y            x不等于y
 关系运算符                               
 >                            >                     x>y             x大于y
 <                            <                     x<y             x小于y
 ≥                           >=                    x>=y            x大于或等于y
 ≤                           <=                    x<=y            x小于或等于y 

                                    图 1.13 相等与关系运算符

    常见编程错误1.5:
    如果==、!=、>=和<=运算符的符号对之间出现空格,则会出现语法错误。
    常见编程错误1.6:
    逆转!=、>=和<=运算符的符号顺序(变为=!、=>、和=<)通常会出现语法错误。将!=写成=!有时不会出现语法错误,但会出现逻辑错误。

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -