001C++之cin>>[i]>>[++i]或cin>>[i]>>[i++]的誤用
- 開門見山:(編譯器中)cin從右往左錄入
-
- 注意
開門見山:(編譯器中)cin從右往左錄入
下面我們用一個例子來解釋其機理:
這是一個簡單的
cin
指派
x=1,y=2
的問題.
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(){
int x,y;
cin>>x>>y;
/*在鍵盤用以下格式輸入兩個數(中間空格),然後回車。
1 2
*/
cout<<x<<y<<endl;
return 0;
}
輸出結果:
由上似乎得出
先将1賦給x,再将2賦給y(先入先出)
的結論——這個結論是錯誤.
然而在編譯器中卻是相反的
先将2賦給y,再将1賦給x(先入後出)
,我們将在下面用數組的例子加以說明。
- 1.如
——錯誤的使用cin >> n[i]>>n[i++]
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(){
n[10], i = 0;
cin >> n[i]>>n[i++];
/*在鍵盤用以下格式輸入兩個數(中間空格),然後回車。
1 2
*/
cout << n[i - 1] << " " << n[i]<<endl;
return 0;
}
輸出結果:
- 2.再如:
——錯誤的使用cin >> n[i]>>n[++i];
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(){
n[10], i = 0;
cin >> n[i]>>n[++i];
/*在鍵盤用以下格式輸入兩個數(中間空格),然後回車。
1 2
*/
cout << n[i - 1] << " " << n[i]<<endl;
return 0;
}
輸出結果:
- 3.最後
——正确的使用cin >> n[i]; cin>>n[++i];
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(){
n[10], i = 0;
cin >> n[i];
cin>>n[++i];
/*在鍵盤用以下格式輸入兩個數(中間空格),然後回車。
1 2
*/
cout << n[i - 1] << " " << n[i]<<endl;
return 0;
}
輸出結果:
注意
- 數組未指派時的值是不确定的.
- ++, --(自增、自減)
-
例:i++; j–;
後置運算符:先去一個副本參與運算,然後運算完後原加1.
-
例:–i; ++j;
前置運算符:先加減,然後參與運算
由此可以證得
指派其是一個cin輸入
的過程,遵循入棧出棧
先入後出,後入先出
的原則。
同時第三種才是
的方法!正确的數組同時cin