如果允许将int赋值给float(反之亦然),是否不类型安全?

Is it not type safe if you are allowed to assign an int to a float (or vice-versa)?

本文关键字:反之亦然 是否 类型安全 float int 赋值 如果      更新时间:2023-10-16

根据我对类型安全的了解,类型安全语言不允许将一种类型的变量赋值给另一种类型的变量(除非执行显式转换)。但是在CC++中,我可以做以下操作:

int i = 12345;
float f = i;    // this is allowed

是否认为该操作不是类型安全的?

[. .类型安全语言不允许将一种类型的变量赋值给另一种类型的变量(除非执行显式转换)。

我不认为这是一个好的定义。相反,我想说的是,类型安全语言不允许特定于/为类型X设计的操作在另一类型Y的值上执行,如果这两种类型在某些度量下不被认为是兼容的。这就是所谓的强类型(不要与静态类型混淆)。

是否认为该操作不是类型安全的?

这是从一种类型到另一种类型的定义良好的(尽管是隐式的)转换。

似乎困扰你的是这个转换是隐式的而不是显式的。但是,我不知道有什么独特的"术语"/词来描述一种语言允许隐式转换。

也就是说,c++肯定不是在所有方面都是类型安全的。