摘要:
1、如果两个类型可以相互转换,就说他们是关联的。 2、隐式转换是指,由编译器自行转换,而不需要程序员介入的转换。 3、以下情况,编译器会发生隐式转换: 1)在大多数表达式中,比int类型小的整型值会被提升为较大的整型值。 2)在条件语句中,非布尔类型会被转换成布尔类型。 3)初始化过程中,初始值的类 阅读全文
摘要:
4.36:假定 i 是int类型,d是double类型,书写表达式 i*=d 使其执行整数类型的乘法而非浮点类型的乘法。 Ans:i*=static_cast<int>(d); 4.37:用命名的强制类型转换改写下列旧式的转换语句。 int i; double d; const string *ps 阅读全文
摘要:
4.34:根据本节给出的变量定义,说明在下面的表达式中将发生什么样的类型转换: a) if (fval) b)dval =fval + ival; c) dval + ival * cval; 需要注意每种运算符遵循的是左结合律还是右结合律。 Ans:a) float类型会转换成bool类型; b) 阅读全文
摘要:
4.31:本节的程序使用了前置版本的递增运算符和递减运算符,解释为什么要用前置版本而不用后置版本。要想使用后置版本的递增递减运算符需要做哪些改动?使用后置版本重写本节的程序。 Ans:根据情况而定,若使用后置版本,那么如果只是使用运算对象的原始值而不需要使用递增后的值,那么后置版本就会继续递增运算对 阅读全文
摘要:
1、函数调用也是一种特殊的运算符,对运算对象的个数不作限制。 2、几元运算符,是基于作用的对象的数量。 3、不同类型的运算对象进行运算,可能会出现类型转换,一般情况下小整数类型会被转换成较大的整数类型,当然,还可能有其他情况的类型。 4、重载运算符的优先级和结合律是无法改变的,但是可以改变运算对象的 阅读全文
摘要:
4.29:推断下面代码的输出结果并说明理由。实际运行这段程序,结果和你想象的一样吗?如果不一样,为什么? int x[10]; int *p=x; cout<< sizeof(x)/sizeof(*x)<<endl; cout<<sizeof(p)/sizeof(*p)<<endl; Ans:第一条 阅读全文
摘要:
4.25:如果一台机器上的int占32位,char占8位,用的是Latin-1字符集,其中字符 ‘ q ’的二进制形式是01110001,那么表达式~‘ q ’<<6的值是什么? Ans:-7296,由于C++规定整数按照补码的形式进行存储,所以应该移位完后再进行求其补码得到的 4.26:在本节关于 阅读全文