为什么在程序运行时第二个循环不执行?

时间:2018-08-21 05:19:34

标签: c++ for-loop

第一个循环运行完全正常,但第二个循环未显示数据。在第一个循环中输入数据后,程序结束。我显示错了吗?顺序不正确吗?

#include <iostream>
#include <string>

using namespace std;

struct Empinfo
{
string name;
int pay;
double hours;
double gross_pay;
};
int main()
{
int count;
int index;
const int arraysize = 3;
Empinfo employee[arraysize]; 
for (count = 0; count < arraysize; count++)
{
    cout << "Enter name of employee" << " " << (count + 1) << ":";
    cin >> employee[count].name;
    cout << "Enter the hourly pay for " << employee[count].name << ": ";
    cin >> employee[count].pay;
    cout << "Enter how many hours " << employee[count].name << "worked: ";
    cin >> employee[count].hours;
    cout << endl;

}
for (index = 0; index << arraysize; index++)
{
    cout << employee[index].name;
    cout << employee[index].pay;
    cout << employee[index].hours;
    cout << employee[index].gross_pay;

}
system("pause");
return 0;
}

3 个答案:

答案 0 :(得分:2)

for (index = 0; index << arraysize; index++)

您的条件变为0 << 3,即0,因此循环甚至不会运行一次。

答案 1 :(得分:0)

通常,这句话:

index << arraysize

应为:

index < arraysize

答案 2 :(得分:0)

您的第二个for循环编写错误

for (index = 0; index << arraysize; index++){ ... } 

如果您发现自己做了 index << arraysize 而不是 index

<<< / em>和>> 运算符是按位运算符,您可以在此处阅读:https://www.geeksforgeeks.org/bitwise-operators-in-c-cpp/

我还提出了一些建议,以提高可读性并减少c ++程序中的混乱情况,当您使用变量声明for循环时,就不需要在循环外执行 inline ,如下所示:

for (int count = 0; count < arraysize; count++){
//Insert your logic here
}
for (int index = 0; index << arraysize; index++){
//Insert your logic here
} 

这样做可以删除程序顶部的count和index变量声明。