条件操作符和sizeof操作符
来源:互联网 发布:fft算法 acm 编辑:程序博客网 时间:2024/06/16 04:45
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 jcout << (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_itemsizeof(Sales_item); //size required to hold an object of type Sale_itemsizeof 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);
- sizeof和条件操作符
- 条件操作符和sizeof操作符
- 条件操作符和sizeof操作符
- 第五章 表达式(part2) 自增和自减、箭头、条件、sizeof 、逗号 操作符
- C++ Primer 学习笔记9 表达式 (求余、自增和自减操作符、箭头操作符、条件表达式、sizeof操作符、逗号操作符)
- sizeof 操作符
- sizeof 操作符详解
- sizeof 操作符
- sizeof操作符
- 操作符sizeof
- sizeof操作符
- sizeof操作符
- [MSDN]sizeof 操作符
- sizeof 操作符
- sizeof操作符
- sizeof操作符
- 详解sizeof操作符
- 详解sizeof操作符
- 理解openstack网络
- 7种形式的Android Dialog使用举例
- casperjs小结
- Git 高频使用命令解析总结
- 自动升级系统OAUS续
- 条件操作符和sizeof操作符
- jQuery-easyUI的使用:easyloader的使用解析
- c++读取csv文件
- 使用AndroidStudio一分钟实现Navigation Drawer 导航抽屉效果
- oc文件操作
- 二、Hadoop集群的配置(Hadoop1.2.1,CentOS6.5)
- c# 开发CAD 只初始化窗口一次,并修改其内的数据
- android用户界面之ProgressBar教程实例汇总
- 学习windows驱动(创建IO请求)