我想知道转换是否像:
int to long
int to long long
long to int
long long to int
long long to long
long to long long
和
long double to double
double to long double
(类似于无符号)是昂贵的操作。我们应该担心转换并定义适当的分配类型吗? (当然存在丢失精度的风险,但我不会写它。我在询问性能)。
例如,如果我确定该号码可以存储在int
类型中。我必须在函数中分配一些内容,例如:void writeToX(long long& x)
。
传递给函数long long x
而不是int x
是否很重要?
答案 0 :(得分:5)
您应该始终努力避免类型转换,因为它们通常表示编程风格较差。
这与转换操作的费用无关,但请注意,您列出的某些转换 - 特别是浮点数到整数类型 - 并不是特别便宜。
在C ++中,转换为无法保存值的类型的行为通常是未定义的。因此,安全转换通常需要通过大小检查来实现,这只会增加费用。