盾怪网教程:是一个免费提供流行杀毒软件教程、在线学习分享的学习平台!

C++程序设计从零开始之表达式

时间:2025/3/11作者:未知来源:盾怪网教程人气:

[摘要]等操作一样,之所以要提供左移、右移操作主要是因为CPU提供了这些指令,主要用于编一些基于二进制数的算法。  <<将左侧的数字转成二进制数,然后将各位向左移动右侧数值的位数,如:4,转为0...
等操作一样,之所以要提供左移、右移操作主要是因为CPU提供了这些指令,主要用于编一些基于二进制数的算法。
  <<将左侧的数字转成二进制数,然后将各位向左移动右侧数值的位数,如:4,转为00000100,左移2位,则变成00010000,得16。
  >>与<<一样,只不过是向右移动罢了。如:6,转为00000110,右移1位,变成00000011,得3。如果移2位,则有一位超出,将截断,则6>>2的返回值就是00000001,为1。
  左移和右移有什么用?用于一些基于二进制数的算法,不过还可以顺便作为一个简单的优化手段。考虑十进制数3524,我们将它左移2位,变成 352400,比原数扩大了100倍,准确的说应该是扩大了10的2次方倍。如果将3524右移2位,变成35,相当于原数除以100的商。
同样,前面4>>2,等效于4/4的商;32>>3相当于32/8,即相当于32除以2的3次方的商。而4<<2等效于4*4,相当于4乘以2的2次方。因此左移和右移相当于乘法和除法,只不过只能是乘或除相应进制数的次方罢了,但它的运行速度却远远高于乘法和除法,因此说它是一种简单的优化手段。
,    其前后各接一数字,简单的返回其右侧的数字。如:
   34.45f,54的返回值是54;-324,4545f的返回值是4545f。
  那它到底有什么用?用于将多个数字整和成一个数字,在《C++从零开始(四)》中将进一步说明。
   关于其他的二元操作符将在后续文章中陆续提到(但不一定全部提到)。
   三元操作符只有一个,为?:,其格式为:<数字1>?<数字2>:<数字3>。它的返回值为:如果<数字1>是逻辑真,返回<数字2>,否则返回<数字3>。如:
   34?4:2的返回值就是4,因为34非零,为逻辑真,返回4。而0?4:2的返回值就是2,因为0为逻辑假,返回2。

  表达式

  你应该发现前面的荒谬之处了——12>435返回值为0,那为什么不直接写0还吃饱了撑了写个12>435在那?这就是表达式的意义了。

  前面说“>”的前后各接一数字,但是操作符是操作数字并返回数字的符号,因为它返回数字,因此可以放在上面说的任何一个要求接数字的地方,也就形成了所谓的表达式。如:23*54/45>34的返回值就是0,因为23*54的返回值为1242;然后又将1242作为“/”的左接数字,得到新的返回值27.6;最后将27.6作为“>”的左接数字进而得到返回值0,为逻辑假。

  因此表达式就是由一系列返回数字的东西和操作符组合而成的一段代码,其由于是由操作符组成的,故一定返回值。而前面说的“返回数字的东西”则可以是另一个表达式,或者一个变量,或者一个具有返回值的函数,或者具有数字类型操作符重载的类的对象等,反正只要是能返回一个数字的东西。如果对于何谓变量、函数、类等这些名词感到陌生,不需要去管它们,在后继的文章中将会一一说明。

  因此34也是一个表达式,其返回值为34,只不过是没有操作符的表达式罢了(在后面将会了解到34其实是一种操作符)。故表达式的概念其实是很广的,只要有返回值的东西就可以称为表达式。

  由于表达式里有很多操作符,执行操作符的顺序依赖于操作符的优先级,就和数学中的一样,*、/的优先级大于+、-,而+、-又大于>、<等逻辑操作符。不用去刻意记住操作符的优先级,当不能确定操作符的执行顺序时,可以使用小括号来进行指定。如:
((1+2)*3)+3)/4的返回值为3,而1+2*3+3/4的返回值为7。注意3/4为0,因为3/4的商是0。当希望进行浮点数除法或乘法时,只需让操作数中的某一个为浮点数即可,如:3/4.0的返回值为0.75。

  &

关键词:C++程序设计从零开始之表达式




Copyright © 2012-2018 盾怪网教程(http://www.dunguai.com) .All Rights Reserved 网站地图 友情链接

免责声明:本站资源均来自互联网收集 如有侵犯到您利益的地方请及时联系管理删除,敬请见谅!

QQ:1006262270   邮箱:kfyvi376850063@126.com   手机版