c++第二十八天

p140~p144:
逗号运算符
1、特点:1)规定运算顺序,即由左向右。2)逗号运算符的真正结果是右侧表达式的值!

 

练习 4.31

使用后置的运算符会有额外的内存开销,

在这道题中使用前置和后置结果貌似是一样的,不需要改。。。

#include<iostream>
using std::cout;
using std::endl;
#include<vector>
using std::vector;
int main()
{
    vector<int> ivec(10);    // 包含10个初始化的元素
    vector<int>::size_type cnt = ivec.size();
    for (vector<int>::size_type ix = 0; ix != ivec.size(); ix++, cnt--) {
        ivec[ix] = cnt;
    }
    for (int &x : ivec) {
        cout << x << endl;
    }
    return 0;
}
/* output:
10
9
8
7
6
5
4
3
2
1
*/

 

练习 4.32
遍历ia中的元素。ix代表元素下标,ptr逐个存放对应元素的地址。

 

练习 4.33
someValue ? ++x, ++y : --x, --y;
先判断someValue的值,若是true,则执行:左侧的表达式,x、y的值依次加1,最后返回y,若是false,
则执行:右侧的表达式,x、y的值依次减1,最后返回y(左值)。

 

p141
类型转换
1、如果两种类型可以相互转换,那么它们就是关联的。

 

2、隐式转换。

 

3、运算对象被统一成最宽的类型。

 

4、整型提升:负责把小整数类型转换成较大的整型类型(int或者unsigned int)

 

练习 4.34
a 非布尔值转换成布尔类型。
b ival转化为float类型,然后相加,转化为double型;或者,fval和ival都转化为double型后相加。
c cval提升成int,相乘后的int值转换成double型。

 

练习 4.35
a 'a'提升成int,相加后得到的int转换为char。
b 都转化为unsigned类型,右侧结果也会转化为unsigned,最后转化为float类型。
c 整数型转化为浮点型,相乘后转换成左侧运算对象double类型。
d 统一成double型后转换为char类型。

 

posted @ 2017-03-06 21:10  xkfx  阅读(160)  评论(0编辑  收藏  举报