(grade=cin.get())!=EOF与grade=cin.get()!=EOF有什么区别
//gradebook.h
#include<string>
using namespace std;
class gradebook
{
public:
gradebook(string name);
void setcoursename(string name);
string getcoursename();
void displaymessage();
void inputgrades();
void displaygradereport();
private:
string coursename;
int acount;
int bcount;
int ccount;
int dcount;
int fcount;
};
//gradebook.cpp
#include<iostream>
#include"gradebook.h"
using namespace std;
gradebook::gradebook(string name)
{
setcoursename(name);
acount=0;
bcount=0;
ccount=0;
dcount=0;
fcount=0;
}
void gradebook::setcoursename(string name)
{
string nameofcourse;
if(name.length()<=25)
coursename=name;
if(name.length()>25)
{
getline(cin,nameofcourse);
if(nameofcourse.length()<=25)
coursename=nameofcourse;
else
coursename=nameofcourse.substr(0,25);
}
}
string gradebook::getcoursename(){return coursename;}
void gradebook::displaymessage(){cout<<"welcome to gradebook for"<<getcoursename()<<"!"<<endl;}
void gradebook::inputgrades ()
{
int grade;
cout<<"Enter the letter grade."<<endl
<<"Enter the EOF character to end input."<<endl;
while(grade=cin.get ()!=EOF)
{
switch(grade)
{
case 'A':
case 'a':
acount++;
break;
case 'B':
case 'b':
bcount++;
break;
case 'C':
case 'c':
ccount++;
break;
case 'D':
case 'd':
dcount++;
break;
case 'F':
case'f':
fcount++;
break;
case '\t':
case ' ':
case '\n':
break;
default:
cout<<"Icorrect letter grade entered."<<endl;
cout<<"Enter a new grade:"<<endl;
break;
}
}
}
void gradebook::displaygradereport ()
{
cout<<"\nNumber of students who receive each letter grade:\n"
<<"A:\n"<<acount
<<"\nB:\n"<<bcount
<<"\nC:\n"<<ccount
<<"\nD\n"<<dcount
<<"\nF\n"<<fcount<<endl;
}
//test.cpp
#include <iostream>
#include "gradebook.h"
int main()
{
gradebook mygradebook("c++");
mygradebook.displaymessage();
mygradebook.inputgrades();
mygradebook.displaygradereport();
system("pause");
return 0;
}
在这个语境中,grade=cin.get()!=EOF会出现输入任何字符回车之后运行结果都是
Icorrect letter grade entered.
Enter a new grade:
而(grade=cin.get())!=EOF则不会
最佳答案
(grade=cin.get())!=EOF 是从控制台得到一个字符,并判断它是否为EOF
而
grade=cin.get()!=EOF 是先判控制台是否为EOF,然后将这个结果赋结grade
结果完全不同
而前者才是正确的写法
这个与C++运算符优先级有关的
其他回答
暂无其它回答!