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);