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

回答編集履歴

2

追記

2022/01/11 09:45

投稿

fana
fana

スコア12205

answer CHANGED
@@ -17,4 +17,28 @@
17
17
  { ... }
18
18
  else //←単にelseでいいよね
19
19
  { ... }
20
+ ```
21
+
22
+ ---
23
+
24
+ (これはこの質問内容への回答ではないけども)
25
+ そんなstaticの使い方をせずとも,この程度の話なのではあるまいか…?
26
+
27
+ ```
28
+ int main()
29
+ {
30
+ //(ふつーにこんな感じに配列を2個書くのではダメな理由が何かあるのだろうか?)
31
+ double pc_1[5] = { 1, 0.885, 0.826, 0.794, 0.775 };
32
+ double pc_2[5] = { 1, 0.769, 0.709, 0.671, 0.645 };
33
+
34
+ double *PC;
35
+ int N;
36
+
37
+ //...
38
+ //(Nの値が1か2になるような処理があるとして)
39
+
40
+ PC = ( N==1 ? pc_1 : pc_2 ); //Nの値によってPCが指す先を変える
41
+
42
+ //...
43
+ }
20
44
  ```

1

追記

2022/01/11 09:45

投稿

fana
fana

スコア12205

answer CHANGED
@@ -2,4 +2,19 @@
2
2
 
3
3
  * 「初期化してない」のがダメだと言われているならば,初期化すれば良い.
4
4
  * あるいは,「(`PC`の値を使用するよりも前の)全ての処理経路において `PC` に何かを代入する」でも良いかと.
5
- (`if(N==1){ ... }else if(N==2){ ... }` だけだと「Nが1でも2でもない場合」を網羅できていない.)
5
+ (`if(N==1){ ... }else if(N==2){ ... }` だけだと「Nが1でも2でもない場合」を網羅できていない.)
6
+
7
+ ---
8
+
9
+ > 実際にはN=1 or N=2です
10
+
11
+ そういう話ならば,Nが1でない場合に「Nが2か否か」をチェックするのは無駄だよね.
12
+ 素直に以下のようにすればよいのでは.
13
+
14
+ ```C
15
+ //「Nが1か否か」という話ならば,素直にこう書けば良いのでは.
16
+ if( N==1 )
17
+ { ... }
18
+ else //←単にelseでいいよね
19
+ { ... }
20
+ ```