当我运行以下程序时,会打印一个4004位数字:
double d;
short s;
d = 23234564568788.5;
d = s = d;
printf("%lf\n", d);
为什么?
答案 0 :(得分:1)
这是UB。例如,在我的机器上,结果为-32768.0
。
我的gcc输出这个警告:warning: conversion to 'short int' from 'double' may alter its value [-Wfloat-conversion]
意味着你不应该这样做,因为它不应该写C的方式(如果一个人希望代码正常运行)。