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

回答編集履歴

3

微修正

2021/08/08 02:52

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -6,7 +6,7 @@
6
6
  「*q が '?', ':', '\0' のいずれか」となった時点でloopを抜ける。
7
7
 
8
8
  2
9
- >!(*q == '?' || *q == ':' || *q == 0);を(*q == '?' || *q == ':' || *q == 0);とした場合、画像のようなエラーが出るのですが、なぜでしょうか?
9
+ > !(*q == '?' || *q == ':' || *q == 0);を(*q == '?' || *q == ':' || *q == 0);とした場合、画像のようなエラーが出るのですが、なぜでしょうか?
10
10
 
11
11
  「*q が '?', ':', '\0' のいずれか」**である** 間 loopを繰り返すのだから、
12
12
  loopを抜けた時点で *q は '?', ':', '\0' ではない。

2

修正

2021/08/08 02:51

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -1,18 +1,18 @@
1
- 1.
1
+ 1
2
2
  > for (q = p; !(*q == '?' || *q == ':' || *q == 0); q++);
3
3
  の!(*q == '?' || *q == ':' || *q == 0);において、なぜ'?'、':'、 0を否定しているのにchには'?'、':'、 0が代入され、内部処理が働くのでしょうか?
4
4
 
5
5
  「*q が '?', ':', '\0' のいずれか」**ではない** 間 loopを繰り返すのだから、
6
6
  「*q が '?', ':', '\0' のいずれか」となった時点でloopを抜ける。
7
7
 
8
- 2.
8
+ 2
9
9
  >!(*q == '?' || *q == ':' || *q == 0);を(*q == '?' || *q == ':' || *q == 0);とした場合、画像のようなエラーが出るのですが、なぜでしょうか?
10
10
 
11
11
  「*q が '?', ':', '\0' のいずれか」**である** 間 loopを繰り返すのだから、
12
12
  loopを抜けた時点で *q は '?', ':', '\0' ではない。
13
13
  したがって if (ch == 0) break; によって 外側のloop:for(;;) ... を抜けることができない。
14
14
 
15
- 3.
15
+ 3
16
16
  > これはバグということでかたずけていいでしょうか?
17
17
 
18
18
  それが期待する動作であるなら、バグではない。如何なる動作を期待していたのか?

1

修正

2021/08/08 02:51

投稿

episteme
episteme

スコア16612

answer CHANGED
@@ -6,4 +6,13 @@
6
6
  「*q が '?', ':', '\0' のいずれか」となった時点でloopを抜ける。
7
7
 
8
8
  2.
9
- >!(*q == '?' || *q == ':' || *q == 0);を(*q == '?' || *q == ':' || *q == 0);とした場合、画像のようなエラーが出るのですが、なぜでしょうか?
9
+ >!(*q == '?' || *q == ':' || *q == 0);を(*q == '?' || *q == ':' || *q == 0);とした場合、画像のようなエラーが出るのですが、なぜでしょうか?
10
+
11
+ 「*q が '?', ':', '\0' のいずれか」**である** 間 loopを繰り返すのだから、
12
+ loopを抜けた時点で *q は '?', ':', '\0' ではない。
13
+ したがって if (ch == 0) break; によって 外側のloop:for(;;) ... を抜けることができない。
14
+
15
+ 3.
16
+ > これはバグということでかたずけていいでしょうか?
17
+
18
+ それが期待する動作であるなら、バグではない。如何なる動作を期待していたのか?