[英]For loop - more in output than needed
好吧,我所要做的就是:
例子 :
用戶輸入:
1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,4
輸出應該是:
1,2,3
據我說,我的輸出是正確的。 但是在 1,2,3 之后,很多 0 進來了。
#include <iostream>
using namespace std;
int i,skaitlis,sk2,x;
int masivs[19];
int main() {
for ( i=0; i<=19; i++ )
{
cin >> masivs[i];
skaitlis = masivs[19];
}
for (i=0;i < sizeof masivs; i++){
if ( masivs[i]<skaitlis){
cout << masivs[i] <<endl;
}
}
}
問題在這里:
for (i=0;i < sizeof masivs; i++){
sizeof
運算符以字節為單位返回數組的大小,而不是以元素數為單位。 在普通的現代系統上, int
的大小是四個字節,這意味着sizeof masivs
將為您提供4*19
。
這將導致循環大量超出范圍並給您未定義的行為。
更不用說你在上一個循環中的另一個越界了。
另外,考慮第一個循環,為什么在循環內分配給skaitlis
? 在修復越界索引后,它只會分配零(因為masivs
是一個全局變量,因此初始化為全零),除非在最后一次迭代中。 您可以將該分配移到循環之外。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.