# 运算符-拼接与冒泡
**`&` 拼字符串,`?` 把失败结果抛给上层。**
```xuantie
设 转 = 整(输("数字:"))?
示("两倍: " & 字(转 * 2))
```
## `&` 字符串拼接
连接两个值成新字符串;非字符串一侧自动转文本。
```xuantie
设 消息 = "计数: " & 42
```
也可以先显式转换再拼:
```xuantie
示("两倍 = " & 字(转.值 * 2))
```
## `?` 错误冒泡
跟在返回 `结果` 的表达式后:成功则解包出值;失败则当前函数立刻把这个失败返回给上层调用者。
```xuantie
设 值 = 除法(10, 2)?
```
也可以单独成行:
```xuantie
设 包 = 除法(10, 2)
设 真值 = 包 ?
// ↑ 标识符允许以 ? 结尾(如 存在?),变量名与 ? 之间必须留空格,否则会被词法器读成一个标识符
```
## 注意
- `?` 只能跟在返回 `结果` 类型的表达式之后。
- `?` 按位置有三种含义:错误冒泡后缀、可空类型修饰(`节点?`)、标识符结尾(`文件.存在?`)。
## 相关
[运算符-符号](运算符-符号.md) · [运算符-算术](运算符-算术.md) · [结果类型与错误处理](../01_结果类型与错误处理.md)