teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

4

追記の追記の追記

2015/11/23 21:59

投稿

T.Kanno
T.Kanno

スコア915

answer CHANGED
@@ -50,4 +50,4 @@
50
50
  else if (area = 5 || 8 || 13 || 22) {   ← 常に真になる
51
51
       ↓
52
52
  else if ((area == 5) || (area == 8) || (area ==13) || (area ==22)) {
53
-
53
+      自分なら switch(area) を使いますけど…

3

追記の追記

2015/11/23 21:59

投稿

T.Kanno
T.Kanno

スコア915

answer CHANGED
@@ -36,4 +36,18 @@
36
36
  car.x = car.x + 50;
37
37
  car.y = car.y - 50;
38
38
 
39
- が実行されてしまっています
39
+ が実行されてしまっています
40
+
41
+ ---
42
+ その後、追記
43
+
44
+ 他も見てみると、if 文の比較式の記述が、かなり誤っているみたいです。
45
+
46
+ if (area = 24) { ← 常に真になる   
47
+      ↓
48
+ if (area == 24) {
49
+
50
+ else if (area = 5 || 8 || 13 || 22) {   ← 常に真になる
51
+      ↓
52
+ else if ((area == 5) || (area == 8) || (area ==13) || (area ==22)) {
53
+

2

少し追記

2015/11/23 21:55

投稿

T.Kanno
T.Kanno

スコア915

answer CHANGED
@@ -17,8 +17,12 @@
17
17
 
18
18
  ```
19
19
 
20
- おそらく使用したい比較演算子は == ではないですか?
20
+ おそらく使用したい演算子は代入演算子の = ではなく、比較演算子は == ではないですか?
21
21
 
22
+ ex.)
23
+ if (a == 0) {
24
+
25
+
22
26
  ---
23
27
 
24
28
  この場合、比較式ではなく記述された代入式の値が0かどうかで偽か真かが決まります。

1

予想される結果の追記

2015/11/23 21:48

投稿

T.Kanno
T.Kanno

スコア915

answer CHANGED
@@ -17,4 +17,19 @@
17
17
 
18
18
  ```
19
19
 
20
- おそらく使用したい比較演算子は == ではないですか?
20
+ おそらく使用したい比較演算子は == ではないですか?
21
+
22
+ ---
23
+
24
+ この場合、比較式ではなく記述された代入式の値が0かどうかで偽か真かが決まります。
25
+
26
+ if (a = 0) の式 a = 0 の結果は 0 ですので、条件式は常に成立しません。
27
+ if (a = 1) の式 a = 1 の結果は 1 ですので、条件式は常に成立します。
28
+ if (a = 2) の式 a = 2 の結果は 2 ですので、条件式は常に成立します。
29
+
30
+ つまり move は a の値にかかわらず、呼び出されるたびに
31
+
32
+ car.x = car.x + 50;
33
+ car.y = car.y - 50;
34
+
35
+ が実行されてしまっています