演算子の優先順位のまとめ。
| 優先順位 | 演算子 |
| 高い | ( ) [ ] -> . |
| ! ~ + – ++ — (型キャスト) * & sizeof | |
| * / % | |
| + – | |
| << >> | |
| < <= > >= | |
| == != | |
| & | |
| ^ | |
| | | |
| && | |
| || | |
| ?: | |
| = += -+ *= /* など | |
| 低い | , |
なんか2度出てくる演算子があるけど?
[追記]
2度出てくる演算子についてコメントをもらった。片方(たぶん優先順位の高いほう)は単項演算しだそう。なるほどね。
コメントありがとうございます。
takatoh's blog – Learning programming languages.
演算子の優先順位のまとめ。
| 優先順位 | 演算子 |
| 高い | ( ) [ ] -> . |
| ! ~ + – ++ — (型キャスト) * & sizeof | |
| * / % | |
| + – | |
| << >> | |
| < <= > >= | |
| == != | |
| & | |
| ^ | |
| | | |
| && | |
| || | |
| ?: | |
| = += -+ *= /* など | |
| 低い | , |
なんか2度出てくる演算子があるけど?
2度出てくる演算子についてコメントをもらった。片方(たぶん優先順位の高いほう)は単項演算しだそう。なるほどね。
コメントありがとうございます。
カンマ(,)って演算子だったんだ!
カンマ演算子は、式を続けて書くときに使う。よく使うのは for ループ。
for (i = 0, j = 0; (i + j) < count; i++, j;;)
...
ループ変数に i と j を使って、それぞれ初期化、インクリメントをしている。
カンマで区切られた式のリストの値は、最も右の式の値になる。次の文では、value には 100 が代入される。
value = (count, 99, 33, 100);
式のリストにカッコをつけているのは、代入演算子よりもカンマ演算子のほうが優先順位が低いから。
変数1 = 変数2 = 変数3 = ... = 変数N = 値;
#include
int main(void)
{
int i, j, k;
i = j = k = 99;
printf("%d %d %d\n", i, j, k);
return 0;
}
takatoh@nightschool $ ./sample_11_8a 99 99 99
例えば
x = x + 3;
という代入があったとき、これを省略記法で
x += 3;
と書ける。省略記法で書ける演算子は次のとおり。
+ - * / % << >> & | ^
#include
int main(void)
{
int i;
for (i = 0; i < 20; i += 2) {
printf("%d\n", i);
}
return 0;
}
takatoh@nightschool $ ./sample_11_8b 0 2 4 6 8 10 12 14 16 18