还能这么写??C++编程中的赢巧奇技

1.括号的省略

省略ifwhilefor方括号的人有很多,但其实switch的方括号也是能够省略的。

#include <iostream>
using namespace std;

char const * less_bracket(int n)
{
  switch(n)
  if(false)
  case 0: return "zero";
  else if(true)
  case 1: return "one";
  else
  case 2: return "two";
}

int main()
{
  cout
  << less_bracket(0)<<" "
  << less_bracket(1)<<" "
  << less_bracket(2);
}
// 输出结果:「zero one two」

2.三目运算符

三目运算符? :其实还可以返回左值

#include <iostream>

int main()
{
  int a=1, b=2;
  (a<b ? a : b)= 3;
  std::cout << a << " " << b; 
}
//输出结果:「3 2」

3.动态设置函数参数的默认值

参数的默认值不光可以在函数定义时设置,还可以在定义之后调用之前设置,同时还可以同时增加一些调用函数时的额外的动作。

#include <iostream>

int max( int a, int b ){  return a<b ? b : a;  }

int main()
{
    int max(int, int=3+!(std::cout<<","));
    for( int i=0 ; i<10 ; ++i )std::cout<<max(i);
}
// 输出结果:「,3,3,3,3,4,5,6,7,8,9」

4.条件式中也能定义变量

很多人习惯在for表达式中定义变量,但其实ifswitch语句中定义变量同样也是可以的。

#include <iostream>
#include <cstring>
#include <initializer_list>

int main()
{
  for( char const * c : { "foo", "bar", "baz", "hoge", "fuga" } ){
    if ( char const * a=strchr( c, 'a' ) )
      std::cout << a;
    else
      std::cout<< c;
    std::cout <<" ";
  }
}
// 输出结果:「foo ar az hoge a 」
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值