一目和二目运算符
向量数据类型可以使用一些与原始数据类型一起使用的一元运算符和二元运算符。
请注意,除非另有说明,否则所有运算符都需要兼容类型作为操作数。 这些运算符在全局作用域或具有静态持续时间的对象不受支持,并且没有常量折叠。
一元运算符对于一元运算符,向量中的每个元素都应用了运算。
| 运算符 | 整数向量类型 | 向量双精度 | Bool 向量类型 |
|---|---|---|---|
| ++ | 是 | 是 | False |
| −− | 是 | 是 | False |
| + | 是 | 是 | False |
| − | 是(无符号向量除外) | 是 | False |
| ~ | 是 | False | 是 |
| *1 | 是 | 是 | 是 |
注意:
二目运算符- 尽管向量数据类型的首选对齐方式是 16 字节的倍数,但指针可以以任何对齐方式指向向量对象。
对于二元运算符,每个元素都应用了第二个操作数中具有相同位置元素的操作。 二元运算符还包括关系运算符。 对于关系运算符,每个元素都应用了第二个操作数中具有相同位置元素的操作,结果应用了 AND 运算符以获得单个值的最终结果。
| 运算符 | 整数向量类型 | 向量双精度 | Bool 向量类型 |
|---|---|---|---|
| = | 是 | 是 | 是 |
| + | 是 | 是 | False |
| − | 是 | 是 | False |
| * | 是 | 是 | False |
| / | 是 | 是 | False |
| % | 是 | False | False |
| & | 是 | False | 是 |
| | | 是 | False | 是 |
| ^ | 是 | False | 是 |
| << | 是 | False | 是 |
| >> | 是 | False | 是 |
| []1 | 是 | 是 | 是 |
| == | 是 | 是 | 是 |
| != | 是 | 是 | 是 |
| < | 是 | 是 | False |
| > | 是 | 是 | False |
| <= | 是 | 是 | False |
| >= | 是 | 是 | False |
注意:
- [] 运算符返回位于指定位置的向量元素。 如果指定的位置超出有效范围,则行为未定义。
输入以下代码:
vector unsigned int a = {1,2,3,4};
vector unsigned int b = {2,4,6,8};
vector unsigned int c = a + b;
int e = b > a;
int f = a[2];
vector unsigned int d = ++a;c 的值为 (3,6,9,12),d 的值为 (2,3,4,5),e 为非零值,f 的值为 3。