2013-01-21 88 views
2

當我嘗試編譯特定程序與-Wall,GCC是表示作爲警示:在C程序,在收到警告:「聲明沒有影響」

expcal.c:66:5: warning: statement with no effect [-Wunused-value] 

這個警告是指行:

ed.operator[j] == str[i]; 

這是在下面的循環中發現:

for(i=0;i<strlen(str);i++) 
     { 
       j=0; 
       if(str[i] == '+' || str[i] == '-' || str[i] == '*') 
       { 
         if(str[i+1] == '+' || str[i+1] == '-' || str[i+1] == '*') 
           return 0; 
         else 
         { 
           //j=0; 
           ed.operator[j] == str[i]; 
           count++; 
           j++; 
         } 
       } 
     } 

我知道,這樣的警告將在分配陳述出現問題時出現。上述代碼中有什麼錯誤會導致GCC產生這樣的警告?

回答

11

聲明

ed.operator[j] == str[i]; 

不是分配;這是一個使用==的比較。爲了使這是一個任務,嘗試寫

ed.operator[j] = str[i]; 

你得到的比較產生從未使用的值表示警告,所以語句不會對程序的任何明顯的效果。這暗示你可能想將它改寫成帶有副作用的東西。

希望這會有所幫助!

+4

'examples_of_why_to_use_Wall ++' –