【发布时间】:2020-12-25 14:44:12
【问题描述】:
我有以下功能。它适用于short:
void foo (short n, short * res)
{
*res = n*2;
}
我想将结果存储在double 变量中。例如:
short in = 5;
double out = 0;
foo(in,&out);
但是这样的结果是一些垃圾。有没有办法在这种情况下强制转换这些类型,或者唯一的解决方案是使用 short 类型的一些临时变量?
【问题讨论】:
-
在调用中使用正确类型的变量,然后赋值给最终的目标变量。
-
关于选角,并不是什么“神奇”的东西就能让事情变得正确。相反,它是一种欺骗、愚弄甚至对编译器撒谎关于某些表达式类型的方法。而且编译器很愚蠢,它会相信你告诉它的东西,即使它不是真的(比如告诉它这个“指向
double”的指针应该被视为“指向short”的指针)。 -
顺便问一下,这个函数返回
int,并且总是返回0的目的是什么?如果您实际上没有返回计算值,则该函数应具有返回类型void。 -
@Someprogrammerdude 是的,在这个特定的示例中返回这样的
int是没有用的,它是原始函数的剩余部分,已针对问题进行了简化
标签: c floating-point type-conversion integer function-definition