回答編集履歴

2

追記

2022/02/21 02:37

投稿

ozwk
ozwk

スコア13553

test CHANGED
@@ -25,3 +25,19 @@
25
25
  for(int i = 0; i < 2; ++i) printf("i = %d\n", i);
26
26
  ```
27
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

test CHANGED
@@ -8,3 +8,20 @@
8
8
  1 -> 2 --- (2が真なら) ---> 3 -> 4 -> 2 -> ...
9
9
 
10
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回ループしてループ回数が異なります。