【C++primer学习日记】2.1基本内置类型

来源:互联网 发布:汉密尔顿 知乎 喜剧 编辑:程序博客网 时间:2024/05/20 17:24

2.1.2类型转换(带符号类型和无符号类型)

2.1.2节可以说仅涉及到带符号类型与无符号类型的转换
如下面代码中 u + i3 ,表达式中既有带符号类型又有无符号类型,带符号数会自动地转换成无符号数。即 i3 转换成 4294967254 ,与 u 相加结果为 4294967264。其结果与先进行计算 即 10 +(-42)= -32,
再将(-32)取模所得结果一致。

unsinged u = 10, u2 = 42;std::cout << u2 - u << std::endl; //结果为32std::cout << u - u2 << srd::endl; //结果为4294967264int i = 10, i2 = 42, i3 = -42;std::cout << i2 - i << std::endl; //结果为32std::cout << i - i2 << std::endl; //结果为-32std::cout << i - u << std::endl; //结果为0std::cout << u - i << std::endl; //结果为0std::cout << u + i3 << std::endl; //结果为4294967264std::cout << i - u2 << std::endl; //结果为4294967264std::cout << u2 + (-i) << std::endl; //结果为32std::cout << -i - u2 << std::endl; //结果为4294967244std::cout << -i - i2 << std::endl; //结果为-52

关于运算式类型转换的更多内容:
转自:数据类型转换的原则及注意问题
数据类型转换的原则及注意问题

一、两条自动转换原则和一条强制性转换原则。

设:x为短整型(2B),y单精度型(4B),z为字符型(1B)。

1、表达式计算中数据类型的自动转换原则
参加运算的各个数据都转换成长度最长的数据类型。结果为数据长度最长的数据类型。例如:
① x+y x先自动转换成单精度型,后计算x+y,结果为单精度型;
② x+z z先自动转换成短整型,后计算x+z,结果为短整型。

2、把运算结果赋给变量时数据类型的自动转换原则
先将运算结果的数据类型自动转换成变量的数据类型,然后赋给变量。例如:
① y=x+z x+z运算结果为短整型,自动转换成单精度型,再赋给变量 y.
② x=y+z y+z运算结果为单精度型,自动转换成短整型,再赋给变量 x.

3、运算结果的强制性数据类型转换原则
强制性数据类型转换格式:(数据类型符)(表达式)
先按自动转换原则计算表达式的值,后将其转换成指定的数据类型。
仅当表达式是单个常量或变量时,表达式括号可省略。例如:
①(float)x 对 x 的值强制转换成单精度;
②(float)x+m 先对 x 的值强制转换成单精度,后再和 m 进行加运算;
③(float)(x+m) 先计算(x+m),后把(x+m)的值强制转换成单精度。

二、类型转换的注意问题

1、表达式的类型转换是临时的,式中的常量或变量的原类型均不改变。

2、把运算结果赋给变量时,若运算结果的数据长度 > 变量的数据长度,会截去超长部分,
将可能导致精度降低或产生不确定的值。

3、类型转换占用系统时间,过多的转换会降低程序运行效率。除必要的外,应选择合适的数据类型。

main()
{
char a;
int x;
x=32767; /* x 的机内码 01111111 11111111 */
a=x; /* a 的机内码(p31) 11111111 */

printf(“a=%3d x=%d\n”,a,x); /* a 的原码 10000001 = -1 */
/* x 的原码 01111111 11111111 = 32767 */

a=x>>8; /* a 的原码 01111111 = 127 */
printf(“a=%3d x=%d\n”,a,x); /* x 的原码 01111111 11111111 = 32767 */
}

2.1.3字面值常量

练习2.8:请利用转义序列编写一段程序,要求先输出2M,然后转到新一行。修改程序使其先输出2,然后输出制表付,再输出M,最后转到新一行。

#include <iostream>int mian(){    std::cout << '\62' << '\155' << '\n';    std::cout << '\62' << '\t' << '\155' << '\n';    return 0;}
0 0
原创粉丝点击