- 复合操作符
- 表达式操作符
- 返回操作符
- 假设操作符if-else
- 假设操作符?:
- 循环操作符 while
- 切换操作符
- 循环操作符 for
- 循环操作符 do while
- 嵌入操作符
- 继续操作符
- Matrix product operator
- 对象创建操作符new
- 对象删除操作符delete
假设操作符?:
三进制操作符一般形式如下:
expression1? expression2:expression3 |
对于第一个操作-"expression1"-任何表达式在布尔型中值都可以用。如果结果是true,那么第二个操作的操作符,例如 "expression2",就被执行。
如果第一操作是false,第三操作-"expression3"-就被执行。第二和第三操作,例如 "expression2"和"expression3"应该返回第一类型值,不应该是空类型。执行假设操作符的结果就是expression2的结果或者expression3的结果,都取决于 expression1。
//--- 一天中开盘价和收盘价的标准化不同点
|
输入等同于如下:
double true_range;
|
操作符使用限制 #
基于"expression1"值,操作符必须返回两个值中的一个 - 或者"expression2"或者"expression3"。对这些表达式有几个限制:
- 不要混淆 简单类型 或 枚举类型 的用户定义类型。 NULL 可能被用于指针.
- 如果值是简单类型,操作符将会是最大类型(请见类型转换 )。
- 如果一个值是枚举类型而第二个值是数字类型,那么枚举类型被整型所取代并实施第二个规则。
- 如果两个值都是枚举类型,它们的类型必须完全相同,并且操作符将是枚举类型。
限制用户定义类型(类或结构):
- 类型必须完全相同或者一个应该源自另一个。
- 如果类型不相同(继承类型),那么子类型会隐式转换至父类型,例如操作符将成为父类型。.
- 不要混淆对象和指针 - 两个表达式都是或是对象或是 指针。 NULL 不能用于指针。
注意
谨慎使用条件操作符当做重载函数的论据, 因为条件操作符的结果类型在程序编译时定义。并且该类型定义为较大的"expression2"和"expression3"。
示例:
void func(double d) { Print("double argument: ",d); }
|
另见
变量初始化 , 可见范围和变量使用期 , 创建和删除对象