为什么将某个短路转换为双倍等于4004位数?

时间:2017-11-20 09:49:33

标签: c floating-point type-conversion double short

当我运行以下程序时,会打印一个4004位数字:

double d;
short s;
d = 23234564568788.5;
d = s = d;
printf("%lf\n", d);

为什么?

1 个答案:

答案 0 :(得分:1)

这是UB。例如,在我的机器上,结果为-32768.0

我的gcc输出这个警告:warning: conversion to 'short int' from 'double' may alter its value [-Wfloat-conversion]意味着你不应该这样做,因为它不应该写C的方式(如果一个人希望代码正常运行)。