我得到了一个我无法完全理解的有趣程序。
#include <iostream>
#include <typeinfo> //added by me to check 'h' variable type
using namespace std;
int main()
{
int a = -1, b =1, c = 1, d = 0, e = 2, f = 2, g = 0;
int h = f-- && e++ && d++ && c-- || b++ || a++; //interesting part
cout << "f:" << f << << " e:" << e << " d:" << d << " c:" << c << " b:" << d
<< " a:" << a << " g:" << g << " h:" << h <<endl;
cout << "h variable type :" << typeid(h).name() << endl;
return 0;
}
所以'h'变量是问题,它在到达c--部分时会增加和减少(c--永远不会发生),而a ++也不会像c--那样发生。 这是为什么? 如果我正确它的东西:h = f--(true)和e ++(true)和d ++(true)和c--(这是假的(如果c = 0)其他发生)或b ++是(真)或一个++(也是如此)。 'h'变量类型是int。但对我来说它看起来像布尔。
编辑:
好的,所以帮助你们,我想出它是如何工作的,前后操作数是什么,非常感谢!
现在我开始打印它是如何工作的,我发现有点奇怪的事情。 如果我运行这个
if(f-- && e++ && d++ & c-- || b++)
cout << "f:" << f << " e:" << e << " d:" << d << " c:" << c << " b:" << b << endl;
它给出了以下内容: f:1 e:3 d:1 c:1 b:2 除C变量外,一切都递增和递减。这有点奇怪。任何人都有任何想法,而C变量是唯一没有递减的,为什么?