以下代码:
myQueue.enqueue('a');
myQueue.enqueue('b');
cout << myQueue.dequeue() << myQueue.dequeue();
Run Code Online (Sandbox Code Playgroud)
将"ba"打印到控制台
而:
myQueue.enqueue('a');
myQueue.enqueue('b');
cout << myQueue.dequeue();
cout << myQueue.dequeue();
Run Code Online (Sandbox Code Playgroud)
打印"ab"为什么会这样?
似乎cout首先调用最外层(最接近;)函数并且正在进行中,它的行为方式是什么?
大家好我今天偶然发现了这段代码,我对于究竟发生了什么以及更具体的顺序感到困惑:
代码:
#include <iostream>
bool foo(double & m)
{
m = 1.0;
return true;
}
int main()
{
double test = 0.0;
std::cout << "Value of test is : \t" << test << "\tReturn value of function is : " << foo(test) << "\tValue of test : " << test << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
Value of test is : 1 Return value of function is : 1 Value of test : 0
Run Code Online (Sandbox Code Playgroud)
看到这一点,我会假设在调用函数之前打印出最正确的参数.那么这是对的评价吗?在调试期间,虽然似乎在输出之前调用该函数,这是我所期望的.我正在使用Win7和MSVS 2010.任何帮助表示赞赏!
我很困惑为什么这条线:
cout << "Your average in this course is " << average() << " and your letter grade is " << convert_to_letterGrade() << "\n";
Run Code Online (Sandbox Code Playgroud)
不起作用,而以下工作(一个cout分为2):
cout << "Your average in this course is " << average();
cout << << " and your letter grade is " << convert_to_letterGrade() << "\n";
Run Code Online (Sandbox Code Playgroud)
此代码位于void函数中,该函数是类的公共成员Grades.average()计算并将结果存储在私有成员变量中averageScore,并返回averageScore.如果平均分数不合理,则convert_to_letterGrade()返回char基于值averageScore和错误消息的值,并且这两个函数都是类的私有成员.
在第一种情况下,我从convert_to_letterGrade()第一个开始收到错误消息,然后是cout语句应该打印的内容.该cout语句打印正确的averageScore值,但当我进入时convert_to_letterGrade(),该函数仍然使用垃圾值averageScore,而第二个工作完全正常,convert_to_letterGrade()也使用正确的 …