44 lines
1007 B
Markdown
44 lines
1007 B
Markdown
# 算術式
|
|
|
|
Decodal は具体的な数値に対する算術演算をサポートする。
|
|
|
|
```dcdl
|
|
{
|
|
workers = 2 + 2;
|
|
timeout = 30.0 / 2;
|
|
port = 8000 + 80;
|
|
negative = -1;
|
|
}
|
|
```
|
|
|
|
## 演算子
|
|
|
|
- `+`: 加算
|
|
- `-`: 減算
|
|
- `*`: 乗算
|
|
- `/`: 除算
|
|
- 単項 `-`: 符号反転
|
|
|
|
`*` と `/` は `+` と `-` より高い優先順位を持つ。
|
|
括弧を使ってグループ化を明示できる。
|
|
|
|
```dcdl
|
|
2 + 3 * 4 # 14
|
|
(2 + 3) * 4 # 20
|
|
```
|
|
|
|
## 数値の扱い
|
|
|
|
算術演算には具体的な `Int` または `Float` の operand が必要である。
|
|
`Int + Int`、`Int - Int`、`Int * Int` は、overflow が発生しない場合に `Int` を返す。
|
|
`Int` と `Float` が混在する演算は `Float` を返す。
|
|
除算は常に `Float` を返す。
|
|
|
|
ゼロ除算と整数 overflow は評価エラーになる。
|
|
|
|
算術式は、default や数値制約を含め、具体的な数値式が必要な任意の場所で使える。
|
|
|
|
```dcdl
|
|
port = Int & > 4000 + 42 default 8080;
|
|
```
|