回答編集履歴
2
追記
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
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回ループしてループ回数が異なります。
|