条件操作符和sizeof操作符

1. 条件操作符

条件操作符是C++中唯一的三元操作符,它允许将简单的if-els判断语句嵌入表达式中。条件操作符的语法格式为:
cond ? expr1 ; expr2;

1.1 避免条件操作符的深度嵌套


int max = i > j 
              ? i > k ? i : k
              ? j > k ? j : k;

可以用更长但更简单的比较语句实现相同的功能:
int max = i;
if (j > max)
    max = j;
if(k > max)
    max = k;

1.2 在输出表达式中使用条件操作符

条件操作符的优先级相当低。当我们要在一个更大的表达式中嵌入条件表达式时,通常必须用圆括号把条件表达式括起来。例如,经常使用条件操作符根据一定的条件输出一个或另一个值,在输出表达式中,如果不严格使用圆括号将条件操作符括起来,将会得到意外的结果:
cout << (i < j ? i : j); // ok: prints larger of i and j
cout << (i < j) ? i : j; // prints 1 or 0;
cout << i < j ? i : j; // error: compares cout to int


2. sizeof操作符

sizeof操作符的作用是返回一个对象或类型名的长度,返回值的类型是size_t,长度的单位是字节。sizeof表达式的结果是编译时变量,有以下三种语法形式:

sizeof (type name) ;
sizeof (expr) ;
sizeof expr ;

将sizeof应用到表达式expr 上,将获得该表达式的结果的类型长度:
Sales_item item,  *p;
//three ways to obtain size required to hold an object of type Sales_item
sizeof(Sales_item); //size required to hold an object of type Sale_item
sizeof item; //size of item's type, e.g., sizeof(Sales_item)
sizeof *p;; //size of type to which p points, e.g.sizeof(Sales_item)
将sizeof用于expr 时,并没有计算表达式expr 的值,特别是在sizeof *p中,指针p可以持有一个无效地址,因为不需要对p做解引用操作。
使用sizeof的结果部分地依赖所涉及的类型:
1,对char类型或者值为char类型的表达式做sizeof操作保证得1。
2,对引用类型做sizeof操作将返回存放此引用类型对象所需的内存空间大小。
3,对指针做sizeof操作将返回存放指针所需的内存大小;注意,如果要获取该指针所指向的对象的大小,则必须对该指针进行解引用。
4,对数组做sizeof操作等效于将对其元素类型做sizeof操作的结果乘上数组元素的个数。
因为sizeof返回整个数组在内存中的存储长度,所以用sizeof数组的结果除以sizeof其元素类型的结果,即可求出数组元素的个数:
// sizeof (ia) / sizeof (*ia) return the number of element in ia
int sz = sizeof (ia) / sizeof (*ia);





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值