aihot  2020-11-12 09:25:43  OpenCV |   查看评论   
1 在大多数表达式中,比int类型小的整数值首先提升为较大的整数类型。 2 在条件中,非布尔值转换成布尔类型。 3 初始化过程中,初始值转换成变量的类型;在赋值语句中,右侧运算对象转换成左侧运算对象的类型。 4 如果算术运算或关系运算的运算对象有多种类型,需要转换成同一种类型。 5 函数调用时,实参与形参之间的类型转换。 6 类类型可以定义一些转换函数。

2)显式转换

1 statci_cast<Type>:任何具有明确定义的类型转换,只要不包含底层const 2 const_cast<Type>:只能改变运算对象底层const 3 reinterpret_cast<Type>:通常为运算对象的位模式提供较底层次上的重新解释。 4 dynamic_cast<Type>:运行时类型识别。

语句

1,和大多数语言一样,C++提供了条件执行语句、重复执行相同代码的循环语句和用于中断前前控制流的跳转语句。

2,在使用块状语句时注意,在块状语句内定义的变量作用域只在块状区域内。特别地,在控制语句,比如if或for语句中,初始化或定义的变量,都只有块区域的作用域。

3,switch语句的使用。case标号必须是整形常量表达式,不允许在switch语句内定义变量如果在它下面还有case或default语句,因为这样会在某些情况下,在没有执行变量定义的case分支的情况下,执行变量定义下面case分支。除非把变量定义在代码块内。

4,在for循环中,如果有continue语句,会跳下continue后面的语句,但是不会跳变for语句中的计数器变化语句。

5,范围for语句

范围for语句是C++11新引入的内容,这种语句可以遍历容器或其他序列的所有元素。它的语法形式为:

1 for(declaration:expression) 2   statement;

其中expression表示的必须是一个序列,比如用花括号括起来的初始值列表或者vector或string等类型对象。这些类型的共同特点是拥有能返回迭代器的begin和end成员。

declaration定义一个变量,序列中的每个元素都得能转换成该变量的类型。确保类型相容最简单的办法是使用auto类型说明符,这个关键字可以令编译器帮助我们指定合适的类型。如果需要对序列中的元素执行写操作,循环变量必须声明成引用类型。

下面是用范围for语句来遍历一个vector的例子。

1 vector<int> v = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 2 for (auto &r : v) 3 { 4     r *= 2; 5 }

在使用范围for时语句时,不能通过范围for语句增加vector对象的元素。因为在范围for语句中,预存了end()的值。一旦在序列中添加(删除)元素,end函数的值就可能变得无效了。

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自C++的那些事:表达式与语句

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]