如果允许将int赋值给float(反之亦然),是否不类型安全?
Is it not type safe if you are allowed to assign an int to a float (or vice-versa)?
根据我对类型安全的了解,类型安全语言不允许将一种类型的变量赋值给另一种类型的变量(除非执行显式转换)。但是在C
和C++
中,我可以做以下操作:
int i = 12345;
float f = i; // this is allowed
是否认为该操作不是类型安全的?
[. .类型安全语言不允许将一种类型的变量赋值给另一种类型的变量(除非执行显式转换)。
我不认为这是一个好的定义。相反,我想说的是,类型安全语言不允许特定于/为类型X
设计的操作在另一类型Y
的值上执行,如果这两种类型在某些度量下不被认为是兼容的。这就是所谓的强类型(不要与静态类型混淆)。
是否认为该操作不是类型安全的?
这是从一种类型到另一种类型的定义良好的(尽管是隐式的)转换。
似乎困扰你的是这个转换是隐式的而不是显式的。但是,我不知道有什么独特的"术语"/词来描述一种语言允许隐式转换。
也就是说,c++肯定不是在所有方面都是类型安全的。
相关文章:
- 在提升multi_index容器中,是否定义了"default index"?
- 在C++STL中是否有Polyval(Matlab函数)等价物?
- 检查输入是否不是整数或数字
- 是否可以初始化不可复制类型的成员变量(或基类)
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 是否可以通过C++扩展强制多个python进程共享同一内存
- 此代码是否违反一个定义规则
- 是否需要删除包含对象的"pair"?
- 是否可以从int转换为enum类类型
- 无论条件是否为true,if总是在c++中执行
- 如何找到大小'x'数组是否完全填充,在C++?
- 检查值是否在集合p1和p2中,但不在p3中
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 检查 std::shared_ptr<> 的当前底层类型是否为 T
- 在读取期间,非重叠串行端口连接是否会阻止写入(反之亦然)
- 类是否对概念进行建模?(概念到特征,反之亦然)
- Qt是否有一种将字节转换为int的方法,反之亦然
- 是否可以"delete"分配"new[1]"的内存,反之亦然?
- 用“operator!=()”实现“operator==()”是否更有效,反之亦然
- 如果允许将int赋值给float(反之亦然),是否不类型安全?