LoginSignup
1
0

More than 3 years have passed since last update.

C/C++ の演算子による演算の結果の型一覧

Last updated at Posted at 2021-01-15

これは何?

C/C++ で組み込み型を演算した結果の型がどうなるのかの表って見たことないなと思ったので作った。

試した環境は macOS(amd64) + clang++ なので、LP64。つまり、int は 32bit。long と long long は 64bit。
単なる char には符号がある。

32bit 環境とかだと違った結果になると思う(自信はない)。
Windows の amd64 も LLP64 だからちがうかな。

型名は、1〜3 文字に省略したけどわかるよね。

( left + right )

まずは加算。

left\right c uc sc s us i ui l ul ll ull f d ld
c i i i i i i ui l ul ll ull f d ld
uc i i i i i i ui l ul ll ull f d ld
sc i i i i i i ui l ul ll ull f d ld
s i i i i i i ui l ul ll ull f d ld
us i i i i i i ui l ul ll ull f d ld
i i i i i i i ui l ul ll ull f d ld
ui ui ui ui ui ui ui ui l ul ll ull f d ld
l l l l l l l l l ul ll ull f d ld
ul ul ul ul ul ul ul ul ul ul ull ull f d ld
ll ll ll ll ll ll ll ll ll ull ll ull f d ld
ull ull ull ull ull ull ull ull ull ull ull ull f d ld
f f f f f f f f f f f f f d ld
d d d d d d d d d d d d d d ld
ld ld ld ld ld ld ld ld ld ld ld ld ld ld ld

四則演算は全部これ。
シフト以外のビット演算も同じだと思う。

見どころは ul()+ll()ull になるところ。

( left << right )

続いてシフト。

left\right c uc sc s us i ui l ul ll ull
c i i i i i i ui l ul ll ull
uc i i i i i i ui l ul ll ull
sc i i i i i i ui l ul ll ull
s i i i i i i ui l ul ll ull
us i i i i i i ui l ul ll ull
i i i i i i i ui l ul ll ull
ui i i i i i i ui l ul ll ull
l i i i i i i ui l ul ll ull
ul i i i i i i ui l ul ll ull
ll i i i i i i ui l ul ll ull
ull i i i i i i ui l ul ll ull

シフトの場合は、右辺は結果の型に影響を与えない。

( cond ? left : right )

続いて条件演算。

left\right c uc sc s us i ui l ul ll ull f d ld
c c i i i i i ui l ul ll ull f d ld
uc i uc i i i i ui l ul ll ull f d ld
sc i i sc i i i ui l ul ll ull f d ld
s i i i s i i ui l ul ll ull f d ld
us i i i i us i ui l ul ll ull f d ld
i i i i i i i ui l ul ll ull f d ld
ui ui ui ui ui ui ui ui l ul ll ull f d ld
l l l l l l l l l ul ll ull f d ld
ul ul ul ul ul ul ul ul ul ul ull ull f d ld
ll ll ll ll ll ll ll ll ll ull ll ull f d ld
ull ull ull ull ull ull ull ull ull ull ull ull f d ld
f f f f f f f f f f f f f d ld
d d d d d d d d d d d d d d ld
ld ld ld ld ld ld ld ld ld ld ld ld ld ld ld

第二項と第三項が同じ型だとその型になる。

見どころは、cond ? c() : sc()i になるところ。

かな。

1
0
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0