質問編集履歴
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になるのか確認してみようとこのプログラムをしてみたのですが、やはり理解できませんでした。
         | 
