C语言中,表达式 0?2.0,3/2:0==3>=2?55:6.0,4%3 的值为多少,为什么?

来源:百度知道 编辑:UC知道 时间:2024/06/02 18:10:56
C语言中,表达式 0?2.0,3/2:0==3>=2?55:6.0,4%3 的值为多少,为什么?
结果是:6.0
请问具体执行顺序是怎样的啊?

等于6.为什么我写在下面
你有书的话查最后面的优先值表和结合性.记 住有些是从右往左算的

表达式最终值为4%3的值,即1
#include <iostream>
using namespace std;
double power(double x,int n);
int main()
{
int a=(0) ?( 2.0,3/2) :(0==3>=2) ? (55) : (6.0,4%3);
cout << a <<endl;
return 0;
}

0?2.0,3/2:0==3>=2?55:6.0,4%3
相当于:0? (2.0,3/2) : ((0==(3>=2))? 55 : (6.0,(4%3)))。
首先执行条件表达式的条件0?,因为条件为假,所以接着求解外层条件表达式的子表达式((0==(3>=2))? 55 : (6.0,(4%3)))部分,并把其值作为整个表达式的值;而这一部分同样先求解条件部分。
由于子表达式条件部分((0==(3>=2))的值为0,所以之后求解(6.0,(4%3))作为整个表达式的值;
而(6.0,(4%3))是逗号表达式,所以先求解子表达式6.0,最后执行4%3,并把其的值作为整个表达式的值,4%3的值为1,所以整个表达式的值为1