int(floatvar) 和 (int)floatvar 之间有区别吗?

发布于 2024-10-08 14:22:32 字数 359 浏览 9 评论 0原文

可能的重复:
C++: function(myVar) 和 (function)myVar 之间有什么区别?

我已经看到并使用了这些类型转换的两种变体:

int(floatvar)

(int)floatvar

两者之间有什么区别吗?对于何时使用哪个有什么偏好吗?

Possible Duplicate:
C++: What's the difference between function(myVar) and (function)myVar ?

I have seen and used both variants of these typecasts:

int(floatvar)

(int)floatvar

Is there any difference between the two? Are there any preferences about when to use which?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

野味少女 2024-10-15 14:22:32

它们之间没有区别。 (int)floatvar 是进行强制转换的 C 方式,而 int(floatvar) 是 C++ 方式(尽管最好明确并使用 static_cast) >)。

There is no difference between them. (int)floatvar is C way of doing the cast where as int(floatvar) is the C++ way (Although it is better to be explicit and use static_cast<>).

苍白女子 2024-10-15 14:22:32

不,这是同一件事。

无论如何,对于 C++ 来说,强制转换 static_cast 是更好的选择。

No, it's the same thing.

Anyway, for C++ cast static_cast is preferable.

笔芯 2024-10-15 14:22:32

该表示法是任何类型的通用表示法,事实上您可以使用 int 来表示,这意味着它可以在模板中使用。

template < typename T, typename U >
T makeTFromU( U u )
{
   return T( u );
}

好吧,这是一个非常简单的例子来显示一个点,但即使 T 是 int 并且 U 是可以转换为 int 的类型,它也能工作。

标准库中的一个例子是向量。如果您使用此构造函数,它将根据参数构造一个元素,并通过第一个元素的复制构造函数构造其他元素。

std::vector< int > v( 20, x );

因此它可能会在内部调用 int(x) 来创建第一个元素,然后复制到 20 个元素中。

The notation is a general one for any type, and the fact you can do it with int means it will work in templates.

template < typename T, typename U >
T makeTFromU( U u )
{
   return T( u );
}

Ok, that is a very simple case to show a point, but it works even when T is int and U is a type that can be converted to int.

An example in the standard library would be vector. If you use this constructor it constructs one element from the parameter and the others by copy-constructor from the first.

std::vector< int > v( 20, x );

thus it will probably internally call int(x) to create the first one to then copy into the 20 elements.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文