我不知道为什么下面两个子程序的结果不同:
int a , b;
a = 13, b=12;
(a > b)? (a++,b--):(a--,b++); // Now a is 14 and b is 11
a = 13, b=12;
(a > b)? a++,b-- : a--,b++; // Now a is 14 but b is 12
Run Code Online (Sandbox Code Playgroud)
但是对于这些情况,结果是相同的:
a = 13, b=12;
(a < b) ? a++,b-- : a--,b++; // Now a is 12 and b is 13
a = 13, b=12;
(a < b) ? (a++,b--) : (a--,b++); // Again a is 12 and b …Run Code Online (Sandbox Code Playgroud) 这里发生了什么事?
#include <iostream>
using namespace std;
int main(){
int x=0,y=0;
true? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl; //why does y=0 here?
x=0,y=0;
false ? ++x, ++y : --x, --y;
cout << "x: " << x << endl;
cout << "y: " << y << endl;
}
x: 1
y: 0
x: -1
y: -1
Run Code Online (Sandbox Code Playgroud)
第二种情况似乎很好.我希望x和y在第一种情况下增加到1,但只有左手操作数增加.
我对以下内容感到困惑:
#include <iostream>
int main()
{
bool a = true;
int nb = 1;
int nb2 = 2;
a ? nb++, nb2++ : nb--, nb2--;
std::cout << " (nb,nb2) = (" << nb << "," << nb2 << ")";
}
Run Code Online (Sandbox Code Playgroud)
结果:
(nb,nb2) = (2,2)
Run Code Online (Sandbox Code Playgroud)
为什么nb2不等于3?