2016-06-20 14 views
0

この関数を呼び出すと、使用されていてもエラーが発生します。誰かが説明できます:ポインタをインクリメントすると式の結果が使用されない

pointers.c:30:5: warning: expression result unused [-Wunused-value] 
    *a++; 
    ^~~~ 

pointers.c:39:9: warning: expression result unused [-Wunused-value] 
     *s++; 
     ^~~~ 

pointers.c:40:9: warning: expression result unused [-Wunused-value] 
     *b++; 
     ^~~~ 

pointers.c:48:7: warning: expression result unused [-Wunused-value] 
     *s++; 
     ^~~~ 
int strend(char *s, char *b){ 
    char *temp = b; 
    while(*s != '\0'){ 
    if(*s == *b){ 
     while(*s == *b && *b != '\0' && *s != '\0'){ 
     *s++; 
     *b++; 
     if(*b == '\0') 
      printf("wrong"); 
     printf("compare: %c, %c\n", *s, *b); 
     printf("equal: %d\n", *s == *b); 
     } 
    } 
    else{ 
     *s++; 
    } 
    printf("check %c, %c\n", *s, *b); 
    if(*b == '\0' && *s == '\0'){ 
     return 1; 
    } 
    else{ 
     b = temp; 
    } 
    if(*s == '\0') 
     printf("bazinga"); 
    } 
    return 0; 
} 
+1

警告は、増分ではなく、無意味な逆参照に関するものです。なぜあなたはポインタを間接参照していますか? '*'演算子は '* s ++'で何をしていますか? – AnT

答えて

4

あなたも、だけでなく、それをインクリメントポインター逆参照。その逆参照は、(増分の前に)古いポインタが指す値を与えますが、その値を使用しないので、警告につながります。

シンプルなソリューションですか?逆参照演算子*は使用しないでください。

+3

つまり、 '* p ++'は '*(p ++)'として解析されます。 – melpomene

関連する問題