Cpp问号冒号

int main()
{
   int a=2,b=4,max;
   max=(a>=b)?a:b;//如果a大于等于b,则把a的值放到max中,否则把b的值放到max中return 0;
}

改写:

    if(a>=b){
        max = a;
    }else{
        max =b;
    }

再看这个:

int GCD(int a, int b){
    return (b==0) ? (a>0 ? a : -a) : GCD(b, a%b);
}

求最大公约数的一行形式的代码,改写:

persudo code:

if(b==0)

  return ( a>0? a:-a)

else

  return GCD(b, a%b)

其中 return ( a>0? a:-a) 还可以继续分解, 所以我个人的总结就是, 有多少个问号就有多少个if, 当然里面把(b==0)? 改写成 while(b!=0){ ...} 应该也是可以的,但我不喜欢这样,因为这样要重新考虑替换问题,我比较喜欢一致性, 再者我比较懒= =

再加个别人写的: (reference:https://zhengchao.net/archives/1618)

int x,y;

cout<<(x<y?x/5*5*(108+88)*0.6+x%5*(108+88)*0.8+(y-x)*88:y/5*5*(108+88)*0.6+y%5*(108+88)*0.8+(x-y)*88);

原文地址:https://www.cnblogs.com/sunchuankai/p/11537993.html