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

回答編集履歴

2

追記

2022/02/21 02:37

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -24,4 +24,20 @@
24
24
  ```C
25
25
  for(int i = 0; i < 2; ++i) printf("i = %d\n", i);
26
26
  ```
27
- こっちは2回ループしてループ回数が異なります。
27
+ こっちは2回ループしてループ回数が異なります。
28
+
29
+
30
+ ---
31
+
32
+ > すみません、説明し忘れていたのですが、大元のコードと「適当に書き換えてみた」結果とではfor文が一回分多いというようなレベルの違いではなく、全く異なる種別の結果となっています。
33
+
34
+ `for(float i=0, ...`としているので、もとのコードとは`for`を抜けた後の`i`の値が大きく異なります。
35
+
36
+ ```C
37
+ #include <stdio.h>
38
+ int main(void){
39
+ float i;
40
+ for(float i=0;i<10;i++);
41
+ printf("%f",i); // 0
42
+ }
43
+ ```

1

2022/02/21 02:32

投稿

ozwk
ozwk

スコア13553

answer CHANGED
@@ -7,4 +7,21 @@
7
7
 
8
8
  1 -> 2 --- (2が真なら) ---> 3 -> 4 -> 2 -> ...
9
9
 
10
- です。1~4はそれぞれ空でも構いません。(2が空の場合は真として扱う)
10
+ です。1~4はそれぞれ空でも構いません。(2が空の場合は真として扱う)
11
+
12
+
13
+ ---
14
+
15
+ > 想像で「こんなことをしているのかな」とコードを適当に書き換えてみたのですが、書き換える前とは異なる結果になりました。
16
+
17
+ 話を単純にするためにdに関わるものを消して、`i`の条件式の右辺を`2`に減らすと
18
+ ```C
19
+ int i=0;
20
+ for(; ++i < 2;) printf("i = %d\n", i);
21
+ ```
22
+ これは1回ループしますが
23
+
24
+ ```C
25
+ for(int i = 0; i < 2; ++i) printf("i = %d\n", i);
26
+ ```
27
+ こっちは2回ループしてループ回数が異なります。