中易网

c语言数据类型选择题

答案:3  悬赏:30  
解决时间 2021-04-28 23:09
  • 提问者网友:醉归
  • 2021-04-27 23:29
有一下定义语句
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都是正确的
最佳答案
  • 二级知识专家网友:苦柚恕我颓废
  • 2021-04-27 23:37
(类型)这个操作是强制转换操作就是让程序运行到这里的时候,默认把存放着其他类型数据的内存单元当作另一种类型的单元来处理如果两者的存放格式是不同的,那么就会导致数据错误。因为double的存放格式是双精度浮点式,是和int型数据不同的,所以可能导致指数部分被当作int的内容来处理(具体存放格式可以网上谷歌“浮点数存放格式”)在这里例子中k的值显然已经错了。 所以,double类型的数据使不能被强制转换成int型的。 所以这道题B和C都不对 =运算符优先级很低,而且是从右向左,==运算符返回的值是0或者1所以D是正确的。
全部回答
  • 1楼网友:猎杀温柔
  • 2021-04-28 01:50
数据类型大的数(即所占内存字节),如果给类型小的数赋值,有可能会发生数据丢失,造成不必要的错误,所以一般只小类型向大的赋值,而不大的向小的赋值!如long a = 65536; int b ;b = a; 因为int 形(假设是2字节)最大数只是65535,所以发生数据的丢失了~~~
  • 2楼网友:说多了都是废话
  • 2021-04-28 00:26

d选项正确是因为d选项是一个表达式,这里你不用关心它的数学意义是否正确,k>=f>=m的值实际上是0,而b选项相当于-(k++),就是k自增后取反,而c选项是因为c语言强制类型转换应该只有(type) name这一种形式不会有type (name)这样的形式吧

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息