
double a,b;
int w;
long c;
若各变量以正确赋值,则下列选项中正确的表达式是:
A. a=a+b=b++ B. w%(int)(a+b)
C. (c+w)%(int)a D. w=a==b该选哪个,为什么?本人感觉B 和C和D都是正确的
(类型)这个操作是强制转换操作就是让程序运行到这里的时候,默认把存放着其他类型数据的内存单元当作另一种类型的单元来处理如果两团搭者的存放格式是不同的,那么就会导致数据错误。因为double的存放格式是双精度浮点式,是和int型数据不同的,所塌闭拿以可能导致指数部分被当作int的内容来处理(具体存放格式可以网上谷歌“浮点数存放格式”)在这里例子中k的值显态孝然已经错了。 所以,double类型的数据使不能被强制转换成int型的。 所以这道题B和C都不对 =运算符优先级很低,而且是从右向左,==运算符返回的值是0或者1所以D是正确的。
数据类型大的数(即所占内存字节),如果给类型小的数赋值,有可能会发生数据丢失,造成不必要的错误,所以一般只小类型向大的赋值,而不大的知知向悄伍小的赋值!如long a = 65536; int b ;b = a; 因为int 形(假设是2字节)最大数只是启猛或65535,所以发生数据的丢失了~~~
D