【发布时间】:2011-01-26 03:03:55
【问题描述】:
在 c 编程中,如果我在下面的等式中使用变量 k、X、Y、n(其中 exp() 是数学常数 e 升为 (),pi = 3.14159...,j = sqrt( -1)) 并且这些变量都被声明为 64b 双精度浮点数(其中 X 是复数),输出的结果也将是这种数据类型。
output = k * exp(2*pi*j*X*Y/n)
现在,如果我想尝试更智能地管理内存,我想做
k、Y 和 n 为 32 位无符号长整数(0 到 4294967295),并且
pi、j 和 X 为 32 位浮点数。
我的问题是,输出的结果是数据类型 float(希望如此)还是 unsigned long int?也就是说,C 语言是否有一些默认规则可以智能地处理浮点数和整数相乘并将结果作为浮点数返回,或者我必须使用类型转换等手动管理它?只是想知道在这样的操作中是否有什么我需要担心的,或者我是否可以让 C 在幕后智能地完成所有事情。
【问题讨论】:
-
这是一种非常糟糕的思维方式。将整数与浮点数混合会导致严重的性能损失。尽可能避免它。
标签: c