質問編集履歴
3
プログラム囲む
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
1つ疑問があります。
|
4
4
|
|
5
5
|
|
6
|
-
|
6
|
+
```C
|
7
7
|
|
8
8
|
#include <stdio.h>
|
9
9
|
#include <string.h>
|
@@ -30,16 +30,15 @@
|
|
30
30
|
|
31
31
|
return 0;
|
32
32
|
}
|
33
|
+
```
|
33
34
|
|
34
|
-
'''
|
35
|
-
|
36
35
|
このプログラミングで、
|
37
36
|
str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
|
38
37
|
私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
|
39
38
|
|
40
39
|
追記
|
41
40
|
|
42
|
-
|
41
|
+
```c
|
43
42
|
#include <stdio.h>
|
44
43
|
#include <string.h>
|
45
44
|
|
@@ -69,6 +68,6 @@
|
|
69
68
|
|
70
69
|
return 0;
|
71
70
|
}
|
72
|
-
|
71
|
+
```
|
73
72
|
|
74
73
|
iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。
|
2
プログラムを囲む
title
CHANGED
File without changes
|
body
CHANGED
@@ -2,6 +2,9 @@
|
|
2
2
|
”苦しんで覚えるC言語”に記載されていたソースコードで、
|
3
3
|
1つ疑問があります。
|
4
4
|
|
5
|
+
|
6
|
+
'''C
|
7
|
+
|
5
8
|
#include <stdio.h>
|
6
9
|
#include <string.h>
|
7
10
|
|
@@ -28,12 +31,15 @@
|
|
28
31
|
return 0;
|
29
32
|
}
|
30
33
|
|
34
|
+
'''
|
35
|
+
|
31
36
|
このプログラミングで、
|
32
37
|
str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
|
33
38
|
私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
|
34
39
|
|
35
40
|
追記
|
36
41
|
|
42
|
+
'''C
|
37
43
|
#include <stdio.h>
|
38
44
|
#include <string.h>
|
39
45
|
|
@@ -63,5 +69,6 @@
|
|
63
69
|
|
64
70
|
return 0;
|
65
71
|
}
|
72
|
+
'''
|
66
73
|
|
67
74
|
iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。
|
1
変数の中身を確認してみたのですが\.\.\.
title
CHANGED
File without changes
|
body
CHANGED
@@ -30,4 +30,38 @@
|
|
30
30
|
|
31
31
|
このプログラミングで、
|
32
32
|
str1の入力がループ強制脱出のifに偽の時、ループの条件式(i = 0;i < len + 1;i++)によると、iは11でループが終了するということになるのと思うのですが、その後のif (i == len + 1)で真の結果がでることが理解できません。
|
33
|
-
私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
|
33
|
+
私の考えではループはiが11になったときに終了するので、iは11でlen + 1(11字+EOSで12)と等しくないと思うのですが、これはなぜiが12になるのでしょうか。
|
34
|
+
|
35
|
+
追記
|
36
|
+
|
37
|
+
#include <stdio.h>
|
38
|
+
#include <string.h>
|
39
|
+
|
40
|
+
int main(void)
|
41
|
+
{
|
42
|
+
char str1[256],str2[] = "DRAGONQEST";
|
43
|
+
int i,len;
|
44
|
+
|
45
|
+
scanf("%s",str1);
|
46
|
+
|
47
|
+
len = strlen(str2);
|
48
|
+
|
49
|
+
printf("%d\n",len);
|
50
|
+
|
51
|
+
for (i = 0;i < len + 1;i++){
|
52
|
+
printf("str1[%d] = %c ,str2[%d] = %c\n",i,str1[i],i,str2[i]);
|
53
|
+
if (str1[i] != str2[i]) break;
|
54
|
+
}
|
55
|
+
|
56
|
+
|
57
|
+
printf("i(%d) == len + 1(%d)\n",i,len + 1);
|
58
|
+
if (i == len + 1) {
|
59
|
+
printf("同じ,i = %d ",i);
|
60
|
+
} else {
|
61
|
+
printf("違う,i = %d ",i);
|
62
|
+
}
|
63
|
+
|
64
|
+
return 0;
|
65
|
+
}
|
66
|
+
|
67
|
+
iが12になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。
|