回答編集履歴

2

誤記

2018/04/19 10:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

test CHANGED
File without changes

1

追記

2018/04/19 10:00

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

test CHANGED
@@ -35,3 +35,105 @@
35
35
 
36
36
 
37
37
  ・・・が、言語仕様に「計算順序に依存しないようなコードの方がよくて、特に副作用は多くても一つの式で一か所だけの方がよい」とあるように、あまりこの仕様に左右されないような書き方を心がけるのが一番よいと思います。
38
+
39
+
40
+
41
+ ---
42
+
43
+ 追記:用語を用いてしゃべるとどうしても意志が伝わっているかどうかわからなくなります。自分が日本語下手なせいなのだと思います。そこで自分が頭の中にイメージしていることを図で表現してみました。
44
+
45
+
46
+
47
+ `a + b + c * d`
48
+
49
+
50
+
51
+ 最初に優先度により次のようにグルーピングされる(グルーピングしなくてもいいけど、とりあえずしてみます)
52
+
53
+
54
+
55
+ `a + b + (c * d)`
56
+
57
+
58
+
59
+ 次に演算子+が左結合なのと、左オペランドが先に評価されることを整理すると
60
+
61
+
62
+
63
+ ```
64
+
65
+ a
66
+
67
+ b
68
+
69
+ +
70
+
71
+ (c * d)
72
+
73
+ +
74
+
75
+ ```
76
+
77
+
78
+
79
+ こういうイメージになる。上の方が先に評価すべきもの。
80
+
81
+ で、グルーピングした乗算式も左オペランド優先の規則に従って書けば括弧を記述する必要がなくなり
82
+
83
+
84
+
85
+ ```
86
+
87
+ a
88
+
89
+ . b
90
+
91
+ +
92
+
93
+ . c
94
+
95
+ . . d
96
+
97
+ . *
98
+
99
+ . .
100
+
101
+ +
102
+
103
+ ```
104
+
105
+
106
+
107
+ a + b + ++ cも同様にすると
108
+
109
+
110
+
111
+ ```
112
+
113
+ a + b + (++c)
114
+
115
+
116
+
117
+ ==>
118
+
119
+
120
+
121
+ a
122
+
123
+ . b
124
+
125
+ +
126
+
127
+ . c
128
+
129
+ . ++ .
130
+
131
+ . .
132
+
133
+ +
134
+
135
+ ```
136
+
137
+
138
+
139
+ こんなふうに捉えています。