2017-07-12 11 views
-4

私は以下のコードを書いています。問題はこれです:私が入力ストリームからxyを読んだら、重要ではありません - 平均値xyは正確な入力値ですが、後で別の値に変更されます。なぜ私のintはC++ programmの途中で変わるのですか?

何が問題なのですか?私はそれを理解することはできません!!

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の[] {};'と 'char型のSS [ ] {}; 'は法的なC++ではありません。あなたのコンパイラがそれを許す拡張機能を提供しても、 'cin >> s;'と 'cin >> ss;'の行は、ほぼ確実に未定義の動作になります。 –

+0

答えは簡単です:未定義の動作。おそらく、配列の範囲外の項目を参照するためです。 –

+4

私は 'char ss [] {};で何をしようとしているのか分かりません。シン>> ss; 'しかし、かなり間違っていると確信しています。 – Borgleader

答えて

1

他は、あなたがそれを

を理解するならば、あなたがコメントした場合、あなたのコードの問題がchar ss[]{};cin>>ss;のでので、私の提案は[]の代わりに文字の文字列を使用することですされており、あなたがcin<<を使用することができます言ったように文字列は、あなたが[]オペレータEX

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

氏@Ronはそれを読むことを勧めします正しい使用することができますThis Books

関連する問題