练习2.33:利用本节定义的变量,判断下列语句的运行结果。
练习2.34;基于上一个练习中的变量和语句编写一段程序,输出赋值前后变量的内容,你刚才的推断正确吗?如果不对,请反复研读本节的示例直到你明白错在何处为止。
答案:2.3,2.4
int i = 0, &r = i;
auto a = r;// int a =r;
const int ci = i, &cr = ci;
auto b = ci; // int b = ci;
auto c = cr; // int c = cr;
auto d = &i; // int * d = i;
auto e = &ci;// const int * e = &ci;
const auto f = ci; // const int f = ci;
auto &g = ci; // const int &g =ci;
//auto &h = 42;
a = 42;//正确。i,r,的值变为42
b = 42;//正确,b的值变为42
c = 42;//正确,c的值变为42
d = 42;// d是指向i的整型指针,不能赋值
e = 42;//e是指针,不能赋值
g = 42;//g和ci绑定,无法通过赋值来改变ci
2.33 ,2.34
a b c都是整型=42
d 为指针 无法从int 转换为int* e 无法从int 到const int* g 整型常量引用 不能给常量赋值
练习2.35:判断下列定义推断出的类型是什么,然后编写程序进行验证。
const int i = 42;
auto j = i; //int j = i;
const auto &k = i; //const int &k = i;
auto *p = &I; //const int *p = &i;
const auto j2 = i, &k2 = I; //const int j2 = i, &k2 =i;