关于C++三目运算的问题

有如下代码:
#include<iostream>
using namespace std;
main()
{
int a,b,c;
int x=10;
int y=9;
a=(--x==y++)?--x:y++;
cout<<"a="<<a<<"\n"<<"x="<<x<<"\n"<<"y="<<y<<"\n";
system("pause");
}
最后的输出结果是a=8;x=8;y=10我想知道是怎么算出来的,求详解过程!!

先判断--x == y++,--x是先执行-运算,实际上你可以理解成两句语句就是x-1 == y ; y = y+1;
所以就是 10-1 == 9,成立,等到判断过了之后,y++生效,y = 10;然后给a赋值,--x,就是
a = x -1 ;你老师说的y++没有执行大概说的事 --x:y++里的y++。追问

谢谢

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-12
就这一句a=(--x==y++)?--x:y++;搞懂就行了。等价于:
x=x-1;
if(x==y){
x=x-1;
y=y+1;//完成(--x==y++)中的y++
}

else {
y=y+1;//完成(--x==y++)中的y++
y=y+1;//完成:y++
}
因为x=10,y=9,所以运行上面代码后结果是a=8、x=8、y=10!本回答被提问者和网友采纳
第2个回答  2013-08-12
a=(--x==y++)?--x:y++;

x先减1,然后和y比较,发现相等,执行第二个--x,所以x=8;
只执行了第一个y++,后面那个没有执行。追问

谢谢

第3个回答  2013-08-12
(--x==y++)比较的时候因为--在x的前面++在y的后面所以比较的用的是x-1和y比较,得出9==9条件成立,运行--x,同时这一步结束以后x = 9, y = 10,x在进行一次--x得出的结果为x = 8;a = x = 8;

c++中的三目运算符执行的结果是?
因为a=1,b=2,所以a

C++三目运算符返回值类型问题
三目运算符是这样的:A?B:C,若A表达式为真,则三目运算符结果为B表达式的结果, 若A为假,则为C的结果,8>5为真,则返回变量a

c++中的运算符“ ?: ”是什么关系?
三目运算符是?:结构的运算 所谓三目就是需要三个变量对能进行运算的操作 举个例子:2>1?A:B 答案就是A 先算“?”前面的,若前面成立就执行:前面的(A),反之就执行后面的(B)再举个简单的例子:a=2>1?3:4 可分成几个部分,用括号分开:(a=)(2>1)?(3):(4)最左边是赋值操作 第...

C++ 三目运算符问题
三目运算就是下面这算式了 a>="a"&&a<="z")?(a+32):a 它的意思是:a代表的字符在小写字母'a'和'z'之间吗?如果是,运算结果是a+32;如果不是,结果是a 这段程序应该是字母大小写转换,但有点问题。如果是想把小写转成大写,后面应该是(a-32);如果是想把大写转成小写,引号里应该是...

C++三目运算符优先级问题
按照你的代码(我加了一句输出),汇编之后,发现g++忽略了1?1:a=1;但是将1?1:a=1;改成1?a:1=1时编译报错,这应该是g++编译器在检查代码时的方向有关 在gcc中无论此三目运算是不能被赋值的,也就是说,不能被当做左值.而在g++中是可以做左值的 ...

C++语言:三目运算符 表达式1 ?表达式2 : 表达式3 的执行方向是右到左...
当然是从左到右了。先判断表达式1,若满足,就执行2,否则执行3。

c++三目运算符很奇怪! unsigned int k=2; int l=-6; cout<<((l+k)>...
unsigned int k=2,是一个没有符号的整形数字,所以当它可i相加时,就成了X值,因为这个X是一个正数,所以=X X大于0 (l+k)>0?1:0,很明显,我们可以看出是输出1了 如果不明白给一个代码你 include <iostream.h> int main(){ unsigned int k=2;int l=-6;cout<<(k+l)<<endl;retu...

关于C++三目运算的问题
先判断--x == y++,--x是先执行-运算,实际上你可以理解成两句语句就是x-1 == y ; y = y+1;所以就是 10-1 == 9,成立,等到判断过了之后,y++生效,y = 10;然后给a赋值,--x,就是 a = x -1 ;你老师说的y++没有执行大概说的事 --x:y++里的y++。

条件运算符(? :)的运算规则是?
C++中,“?”与“:”共同组成三目条件运算符(?:)三目条件运算符(?:)使用例子如下:x ? y:z;上面的三目条件运算的规则是:先计算表达式x的值,若x为真,则整个三目运算的结果是表达式y的值;若x为假,则整个三目运算的结果是表达式z的值。下面的例子为从两个数中找出较大的程序:int a=3,...

求C++高手~~~解答优先级问题~~求你们啊~~~谢谢了,详细地解答下怎么计...
你应该是这句不明白吧,三目运算符是从右向左的结合。相当于这样:k = (i-j) ? (i+j) : ((i-3) ? j : i);先计算表达式:((i-3) ? j : i),判断(i-3) = 7,非零为真。那么 ((i-3) ? j : i) = j = 20;再计算 k = (i-j) ? (i+j) : 20; 判断(i-j)...

相似回答
大家正在搜