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

📄 ls07.php

📁 编程摇篮德CB学习课程
💻 PHP
📖 第 1 页 / 共 2 页
字号:
      <P>int b = ++a; //前置++</P>
      <P>运算结果:a的值为11,b的值也为11。</P>
      <P>计算过程解析:</P>
      <P>先计算 ++a,结果a值为11;</P>
      <P>然后再计算 b = a;结果b值也为11。</P>
      <P> </P>
      <P>例子2:</P>
      <P>int b = a++; //后置++</P>
      <P>运算结果:a的值为11,但b的值为10。</P>
      <P>计算过程解析:</P>
      <P>先计算 b = a;因此,b的值是未加1之前的a,所以为10;</P>
      <P>然后再计算 a++,a的值为11。</P>
      <P> </P>
      <P>再举一复杂点的表达式:</P>
      <P>int a = 10;</P>
      <P>int c = 5;</P>
      <P> </P>
      <P>int b = a++ + c;</P>
      <P>执行这些代码,b值为15</P>
      <P> </P>
      <P>倘若换成:</P>
      <P>int a = 10;</P>
      <P>int c = 5;</P>
      <P>int b = ++a + c;</P>
      <P>执行这些代码,b值为16;</P>
      <P>想一想,为什么?</P>
      <P> </P>
      <P>上在举的是++的例子,对于--操作,其计算顺序的规定一样。</P>
      <P> </P>
      <P>++和--的确能加快运算速度,但它们在前置和后置运算上的微小区别,却很空易让你的代码变得不清晰。更为不好的是,不同的编译器可能会对比有不同的解释,比如VC和BC/CB会对同一代码会有不同的编译结果,造成代码的运行结果也不一样,这是我们应该尽量避免的。所以我们建议在代码尽量不要依赖于前置和后置运算的区别。(尽管它会让你的代码看上去很象“高手”所写)。</P>
      <P> </P>
      <H3><A name=7.2>7.2</A> 算术类型转换</H3>
      <H4><A name=7.2.1>7.2.1</A> 隐式类型转换</H4>
      <P>类型转换在C,C++中也属于一种运算。</P>
      <P>前面我们举过一个例子:</P>
      <P>float a = 5 / 2 ;</P>
      <P>还记得a的计算结果吗?上式中,a将得到的值是2。因为在除式 5/2 
      中,5和2都是整数,所以计算机按整数类型进行了除运算,结果所有的小数位都被丢失了。</P>
      <P>我们列出了三种可以解决小数位丢失的方法:</P>
      <P>方法1: float a = 5.0 / 2;</P>
      <P>方法2: float a = 5 / 2.0;</P>
      <P>方法3:&nbsp; float a = 5.0 / 2.0;</P>
      <P> </P>
      <P>最后一种方法好理解,5.0和2.0都明确指定为实型(double),所以计算结果可以保存小数位。而像第一种:被除数5.0被指定的为实型,但除数2仍然为整型,这两种数据类型的精度不一样,这时,计算机将按哪个类型作为标准呢?</P>
      <P> </P>
      <P><B>C++遇到两种不同数据类型的数值进行运算时,会将某个数做适当的类型转换,然后再进行转换。转换总是朝表达能力列强的方向进行,并且转换总是逐个运算符进行的。</B></P>
      <P> </P>
      <P>以下是转换的两条方向线:</P>
      <P>char/unsigned char --&gt; short/unsigned short --&gt; int/unsigned int 
      --&gt; double --&gt; long double</P>
      <P>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
      float&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --&gt; double --&gt; 
      long double</P>
      <P> </P>
      <P>像上面的 a = 5 / 2。计算机先计算5/2,由于 
      5,2一样是整型,所以计算机不作转换,算出其结果为2,然后赋值给a,因此,就算a是float类型,但仍然只能得到2的结果,而不是2.5。</P>
      <P>而 a = 5.0 / 2。计算机在计算 5.0 / 2 
      时,发现5.0是实型(带小数点),而2是整型,二者不一,所以将2先自动转换成double数,然后现和5.0进行除运算。</P>
      <P>这个转换过程,在程序运行时自动进行,称为隐式转换。</P>
      <P>隐式(自动)转换尽量使用我们的程序更加合理,但有时它并不能完全符合我们的要求。比如:</P>
      <P> </P>
      <P>int b = 5, c = 2;</P>
      <P>float a = b / c;</P>
      <P> </P>
      <P>由于除号两边的操作数:b、c都是有明确类型的变量。这时,既不会有隐式转换进行,我们也不能通过加 '.0'来改变其中某个数的数据类型:</P>
      <P>float a = b.0 / c.0; //这种写法是错误的,不可能实现。</P>
      <P>这种情况下,我们需要显式(强制)类型转换。</P>
      <H4><A name=7.2.2>7.2.2</A> 显式类型转换</H4>
      <P>显式类型转换也称为强制类型转换。它的语法形式有两种:</P>
      <P>形式1 : (类型名) 变量或数值</P>
      <P>形式2: 类型名(变量或数值)</P>
      <P> </P>
      <P>实际例子如:</P>
      <P>int b = 5, c = 2;</P>
      <P>float a = (float)b / c;</P>
      <P>或者:</P>
      <P>float a = float(b) / c;</P>
      <P>两种写法都可以将变量b强制转换为float类型。</P>
      <P>不过,在要转换的数据类型带有修饰符时,则必须使用第一种型式。比如:(unsigned int) a;</P>
      <P>其实,两边都加上括号有时更清晰:(unsigned int) (a);</P>
      <P> </P>
      <H4><A name=7.3>7.3</A> 关系运算</H4>
      <P>“关系”运算?听上去很费解。</P>
      <P>计算机系一师哥师妹正在处朋友,某晚两人在校园林荫处正在谈情说爱,突然冒出一校监:“说!你俩什么关系?”</P>
      <P>果然不愧为计算机系的一对小情侣,以下是他们的回答:</P>
      <P>男:“我比她高!”</P>
      <P>女:“我比他瘦。”</P>
      <P>男:“我比她壮!”</P>
      <P>女:“我比他美。”</P>
      <P>校监:“我倒!”</P>
      <P> </P>
      <P>所谓的关系运算,在C,C++语言里,就是比较运算。</P>
      <P>算术运算所得的结果是数值,而<B>关系运算所得的结果为逻辑值,也称布尔值</B>。即我们以前所学的bool类型允许的值:真或假。真用true表示,假用false表示。</P>
      <P>关系操作符有:</P>
      <P>== (比较左右值是否相等)</P>
      <P>&gt;&nbsp; (比较左值是否大于右值)</P>
      <P>&gt;= (比较左值是否大于或等于右值,也称为不小于)</P>
      <P>&lt;&nbsp; (比较左值是否小于右值)</P>
      <P>&lt;=(比较左值是否小于或等于右值,也称为不大于)</P>
      <P>!= (比较左右值是否不相等)</P>
      <P> </P>
      <P>比较是否相等,使用两个连写的等号表示。因此 == 和 = 是两个不同的概念,后者指赋值运算。</P>
      <P>C,C++的不等于用 != 表示,而不是我们更常见的 &lt;&gt;,请大家注意。</P>
      <P>下面举一些例子。</P>
      <P> </P>
      <P>int a = 10;</P>
      <P>int b = 9;</P>
      <P>则:</P>
      <P>a == b+1 运算结果: true;</P>
      <P>a == b &nbsp; 运算结果: false;</P>
      <P>a &gt; b&nbsp;&nbsp;&nbsp; 运算结果: true</P>
      <P>a &gt;= b&nbsp;&nbsp; 运算结果: true;</P>
      <P>b &gt; a &nbsp;&nbsp; 运算结果: false;</P>
      <P>a &gt;= b+1 运算结果: true;</P>
      <P>a &lt;= b+1 运算结果: true;</P>
      <P>a != b;&nbsp; 运算结果:true;</P>
      <P> </P>
      <H4><A name=7.4>7.4</A> 逻辑运算</H4>
      <P> </P>
      <P>逻辑运算有三个操作符:</P>
      <P>!&nbsp; (非,取逻辑反,NOT)</P>
      <P>&amp;&amp; (逻辑与,并且,AND)</P>
      <P>|| (逻辑或,或者,OR)</P>
      <P> </P>
      <P>该到考验你是否有资质学习编程的时候了……请回答以下三个问题:</P>
      <P> </P>
      <P><B><FONT color=#ff0000>......[此处内容不发表在网页,请报名的学员使用<A 
      href="http://www.bcbschool.com/noused/v4_xiazai.htm" 
      target=_blank>课程下载器</A>下载完整课程]......</FONT></B></P>
      <P> </P>
      <P>尽管课程列出了所有可能性,尽管看上去也就这几话,但大家一定要从骨子里头理解这些,不能管背住来解决问题。当我们写程序时,就会发现天天在和一堆的真假判断打交道,如果这些最基本的逻辑操作你不理解,那么就会给解决复杂的逻辑问题带来麻烦。</P>
      <P> </P>
      <H4><A name=7.5>7.5</A> 表达式</H4>
      <P> </P>
      <P>变量、常量、各种运算符等组成表达式,用于表达一个计算过程。</P>
      <P>比如写一个计算圆面积,我们可以如下表达:</P>
      <P> </P>
      <P>area = PAI * R * R;</P>
      <P>其中,R是某一定义的变量,表示半径,而PAI我们事先定义的一个值为3.14的宏。</P>
      <P> </P>
      <P>PAI * R * R; 是一个表达式;area = PAI * R * 
      R;也是一个表达式。表达式组成了C,C++语句,而语句组成C,C++的程序。</P>
      <P> </P>
      <P>简单的如:3 + 2 ,也是一个表达式。</P>
      <P> </P>
      <P><B>表达式是操作符、操作数和标点符号组成的序列,用于表达一个计算过程。</B></P>
      <P> </P>
      <P>对表达式的计算,需要考虑其各计算部分的运算优先级,其中最熟悉莫过于我们小学就学过的“括号优先,先乘除后加减”。</P>
      <P>下面列出我们已学过的运算符的优先级:</P>
      <P> </P>
      <P>按优先级高低排列的运算符:</P>
      <P> </P>
      <TABLE height=73 width="97%" border=1>
        <TBODY>
        <TR>
          <TD width="19%" height=19>级别</TD>
          <TD width="52%" height=19>运算符</TD>
          <TD width="58%" height=19>说明</TD></TR>
        <TR>
          <TD width="19%" height=19>1</TD>
          <TD width="52%" height=19>( )</TD>
          <TD width="58%" height=19>括号</TD></TR>
        <TR>
          <TD width="19%" height=17>2</TD>
          <TD width="52%" height=17>!&nbsp; +(正号) -(负号) ++ -- sizeof</TD>
          <TD width="58%" height=17>+,-在这里不是加减,而是指正负号</TD></TR>
        <TR>
          <TD width="19%" height=17>3</TD>
          <TD width="52%" height=17>* / % </TD>
          <TD width="58%" height=17>乘,除,求模(取余)</TD></TR>
        <TR>
          <TD width="19%" height=17>4</TD>
          <TD width="52%" height=17>+ -</TD>
          <TD width="58%" height=17>加减</TD></TR>
        <TR>
          <TD width="19%" height=17>5</TD>
          <TD width="52%" height=17>== !=</TD>
          <TD width="58%" height=17>等于 不等于判断</TD></TR>
        <TR>
          <TD width="19%" height=17>6</TD>
          <TD width="52%" height=17>&amp;&amp;</TD>
          <TD width="58%" height=17>逻辑与</TD></TR>
        <TR>
          <TD width="19%" height=17>7</TD>
          <TD width="52%" height=17>||</TD>
          <TD width="58%" height=17>逻辑或</TD></TR>
        <TR>
          <TD width="19%" height=17>8</TD>
          <TD width="52%" height=17>= += *= /= %= </TD>
          <TD width="58%" height=17>赋值,自运算操作符</TD></TR></TBODY></TABLE>
      <P> </P>
      <H4><A name=7.6>7.6</A> 语句</H4>
      <P><B><FONT color=#ff0000>......[此处内容不发表在网页,请报名的学员使用<A 
      href="http://www.bcbschool.com/noused/v4_xiazai.htm" 
      target=_blank>课程下载器</A>下载完整课程]......</FONT></B></P>
      <P> </P>
      <P>正是一行行语句组成C,C++程序,结果本章时,我们可以自豪地宣布:我们已经一脚迈入了C++大门的门槛!</P></TD></TR></TBODY></TABLE></CENTER></BODY></HTML>

⌨️ 快捷键说明

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