2017-07-12 74 views
-4

我寫下了下面的代碼。問題是這樣的:在我從輸入流中讀取xy之後沒有什麼問題 - 意思是xy是輸入的確切值 - 但後來他們改變爲其他值。爲什麼我的int在C++程序中間改變了?

這是怎麼回事?我不明白!!

int count(char s[], char ss[] , long long int posF, long long int posE){} 
int main() 
{ 
    char s[]{}; 
    int q = 0; 
    cin >> s; 
    cin >> q; 
    int choise = 0; 
    while(q--) 
    { 
     cin>>choise; 
     if(choise == 1) 
     { 
      int x = 0; 
      cin>>x; 
      char c; 
      cin>>c; 
      s[x-1] = c; 
     } 
     else if(choise == 2) 
     { 
      int x = 0; 
      int y = 0; 
      cin>>x>>y; 
      //Fist LOG 
      cout<<"First log x and y are correct "<<x<<" "<<y<<endl; 
      char ss[]{}; 
      cin>>ss; 
      //Second LOG 
      cout<<"Second log x and y are wrong?Why?"<<x<<" "<<y; 
      cout<<count(s, ss, x-1, y-1)<<endl; 
     } 

    } 
    return 0; 
} 
+11

'個char [] {};'和'炭SS [ ] {};'不合法的C++。即使你的編譯器提供了允許的擴展,cin >> s;和cin >> ss幾乎肯定是未定義的行爲。 –

+0

答案很簡單:未定義的行爲。很可能是由於將數組引用超出了數組的範圍。 –

+4

我不知道你想用'char ss [] {}來做什麼; cin >> ss;'但我敢肯定它的錯誤。 – Borgleader

回答

1

至於對方說你的代碼的問題是char ss[]{};cin>>ss;,所以如果你評論,如果你就會明白它

所以我的建議是使用字符串代替的char [],您可以使用cin<<爲字符串,你可以使用[]操作前

string s = "Code"; 
cout<<s[0]; 

和@Ron先生是正確的,最好閱讀This Books

相關問題