任法融上善若水:c++语句!

来源:百度文库 编辑:高考问答 时间:2024/03/29 01:28:29
c=(a++,a+=b,a-b);

c=a-b?a-3?b:b-a:a;

谁能解释这两句程序什么意思!
晕~~~ 三个答案就有连个人说的不一样~~ 究竟哪个正确? 6、逗号表达式
逗号表达式是用逗号将若干个表达式连起来组成的表达式。该表达式的值是组成逗号表达式的若干个表达式中的最后一个表达式的值,类型也是最后一个表达式的类型。
逗号表达式的计算顺序是自左至右。
参见右例3-13

c=(a++,a+=b,a-b);
相当于
a++;
a+=b;
c=a-b;

c=a-b?a-3?b:b-a:a;
相当于
if (!(a-b))
{
c=a;
}
else
{
if (a-3)
{
c=b;
}
else
{
c=b-a;
}
}

c=(a++,a+=b,a-b); /*由于这里用了逗号表达式, 从右往左运算, 整个表达式的值为最后一次运算的值,即a++的值,由于a-b和a+=b都没有赋值运算, 所以a++后, 表达式为a+1的值, c 就等于a+1 */

c=a-b?a-3?b:b-a:a; /* 这个可以看为如下:
c=(a-b)?(a-3?b:b-a ):a;
*/