casting相关内容

计算距对象起点的距离时,_ATL_PACKING 常量有什么用?

ATL 具有 一组宏-称为COM映射.COM 映射是一个表,它将接口 GUID 与要添加到 this 指针以获取相应子对象的偏移量相关联 - 整个内容用作 显式 static_cast 用于 IUnknown::QueryInterface() 中的向上转换. 地图条目是使用offsetofclass宏构建的: #define _ATL_PACKING 8#define offsetofc ..
发布时间:2021-11-30 14:07:10 C/C++开发

“来自整数的指针/来自没有强制转换的指针的整数"问题

这个问题是关于整数和指针问题之间的所有初始化/分配的常见问题解答. 我想编写代码,将指针设置为特定的内存地址,例如 0x12345678.但是当用 gcc 编译器编译这段代码时,我得到“初始化使指针从整数而不进行强制转换"警告/错误: int* p = 0x12345678; 同样,这段代码给出了“初始化从指针生成整数而不进行强制转换": int* p = ...;int i = p; ..
发布时间:2021-11-30 12:25:39 其他开发

为什么左值转换有效?

我今天第一次看到这种演员阵容,我很好奇为什么会这样.我认为以这种方式铸造会分配给临时成员,而不是班级成员.使用 VC2010. A 类{民众:一种() :m_value(1.f){((float)m_value) = 10.f;}const float m_value;}; 解决方案 它不应该工作.使用强制转换表示法到 float 的显式类型转换将是纯右值(第 5.4 节): 表达式 ..
发布时间:2021-11-30 12:12:41 C/C++开发

结构指针兼容性

假设我们有两个结构体: typedef struct Struct1{短 a_short;内部标识;结构 1;typedef struct Struct2{短 a_short;内部标识;短 another_short;结构2; 从 Struct2 * 转换为 Struct1 * 是否安全?ANSI 规范对此有何规定?我知道一些编译器可以选择重新排序结构字段以优化内存使用,这可能会使两个结构不兼 ..
发布时间:2021-11-28 17:45:56 其他开发

我应该担心指针投射期间的对齐吗?

在我的项目中,我们有一段这样的代码: //原始数据由 4 个整数组成无符号字符数据[16];int i1, i2, i3, i4;i1 = *((int*)data);i2 = *((int*)(data + 4));i3 = *((int*)(data + 8));i4 = *((int*)(data + 12)); 我与我的技术负责人谈过,此代码可能不可移植,因为它试图将 unsigned ..
发布时间:2021-11-27 08:05:20 C/C++开发

可以通过转换为布局兼容类型来访问私有成员函数吗?

从这个问题的讨论 在 C++ 中如何访问私有变量在幕后实现?我提出了一个变体: 除了访问私有数据成员之外,是否可以通过强制转换和依赖布局兼容性来调用私有成员函数? 一些代码(灵感来自 Herb Sutter 的专栏 访问权限的使用和滥用) #include X级{民众:X() : private_(1) {/*...*/}私人的:int Value() { return private_; ..
发布时间:2021-11-26 18:44:08 C/C++开发

为什么当我将一个类转换为它没有实现的接口时没有编译器错误?

如果我尝试从一个类到一个接口的无效转换,那么编译器不会抱怨(错误发生在运行时);但是,如果我尝试对抽象类进行类似的转换,它确实会抱怨. class 程序{抽象类 aBaz{公共抽象 int A { 得到;}}接口 IBar{int B { 得到;}}Foo类{公共 int C { 得到;}}静态无效主(){foo foo = new foo();//编译器错误,正如预期的那样,因为 Foo 没有 ..
发布时间:2021-11-26 17:00:02 C#/.NET

十六进制长整数文字“L"的C解释

根据自动转换,C 编译器如何解释表示长整数文字的“L"?以下代码在 32 位平台(32 位长,64 位长)上运行时,似乎将表达式“(0xffffffffL)"转换为 64 位整数 4294967295,而不是 32 位 -1. 示例代码: #include int main(void){长长 x = 10;长长 y = (0xffffffffL);long long z = (long)( ..
发布时间:2021-11-26 14:17:29 其他开发

将 float 转换为 int 的差异,32 位 C

我目前正在使用需要运行 32 位系统的旧代码.在这项工作中,我偶然发现了一个问题(出于学术兴趣)我想了解其原因. 如果转换是在变量或表达式上完成的,那么在 32 位 C 中从 float 转换为 int 的行为似乎有所不同.考虑程序: #include int main() {int i,c1,c2;浮动 f1,f10;对于 (i=0; i 直接在 32 位系统或 64 位系统上使用 - ..
发布时间:2021-11-26 14:09:55 其他开发

将指针转换为整数

我正在尝试将现有代码改编为 64 位机器.主要问题是在一个函数中,前一个编码器使用了一个 void* 参数,该参数在函数本身中被转换为合适的类型.一个简短的例子: void 函数(MESSAGE_ID id, void* param){如果(id == FOO){int real_param = (int)param;//...}} 当然,在 64 位机器上,我得到错误: error: ca ..
发布时间:2021-11-26 14:01:08 C/C++开发

泛型:转换和值类型,为什么这是非法的?

为什么这是一个编译时错误? public TCastTo CastMe(TSource i){返回 (TCastTo)i;} 错误: 无法将类型“TSource"转换为“TCastTo" 为什么这是一个运行时错误? public TCastTo CastMe(TSource i){返回 (TCastTo)(object)i;}int a = 4;long b = CastMe(a ..
发布时间:2021-11-26 10:35:11 C#/.NET

在返回浮点更改结果的方法中将结果转换为浮点数

为什么此代码在 .NET 4 中打印 False?显式转换似乎导致了一些意外行为. 我想要一个超越“浮点数不准确"或“不要那样做"的答案. float a(float x, float y){返回 ( x * y );}浮动b(浮动x,浮动y){返回(浮动)(x * y);}无效主(){Console.WriteLine( a( 10f, 1f/10f ) == b( 10f, 1f/10 ..
发布时间:2021-11-26 10:28:16 C#/.NET

如何将对象转换为 Type 类描述的类型?

我有一个对象: ExampleClass ex = new ExampleClass(); 还有: 类型目标类型 我想将 ex 转换为 TargetType 描述的类型,如下所示: Object o = (TargetType) ex; 但是当我这样做时,我得到: 类型或命名空间名称 't' 可以找不到 那么怎么做呢?我在这里错过了什么令人讨厌的东西吗? 更新: ..
发布时间:2021-11-26 10:20:55 C#/.NET

使用 LINQ 转换 List列出<T>

我有 2 个具有相同属性的类.我将第一类的属性放入列表中,然后,我想获取一些需要的属性并将它们放入第二类类型的列表中.我已经通过 C# 制作了演员序列并且运行正常,但我必须使用 LINQ.我试图做一些事情,但没有很好的结果.请帮助我提出建议. 第一类: 公共类 ServiceInfo {私人长_id;公共长 ID {得到 { 返回 this._id;}设置 { _id = 值;}}私人字 ..
发布时间:2021-11-26 10:17:20 C#/.NET

原始类型“short" - 在 Java 中进行转换

我有一个关于 Java 中原始类型 short 的问题.我正在使用 JDK 1.6. 如果我有以下几点: short a = 2;短 b = 3;短 c = a + b; 编译器不想编译 - 它说它“无法从 int 转换为 short"并建议我转换为 short,所以: short c = (short) (a + b); 确实有效.但我的问题是为什么我需要投射?a 和 b 的值在 ..
发布时间:2021-11-25 20:36:00 Java Web开发

在 Java 中将双精度转换为整数

有什么方法可以将 java.lang.Double 转换为 java.lang.Integer? 抛出异常 "java.lang.ClassCastException: java.lang.Double 与 java.lang.Integer 不兼容" 解决方案 A Double 不是 Integer,因此转换不起作用.请注意 Double class 和 double pri ..
发布时间:2021-11-25 19:41:30 Java Web开发

如何通过四舍五入在Java中将double转换为int?

我需要在 Java 中将 double 转换为 int,但数值必须始终向下取整.即 99.99999999 -> 99 解决方案 转换为 int 隐式丢弃任何小数.无需调用 Math.floor()(假设为正数) 简单地使用 (int) 进行类型转换,例如: System.out.println((int)(99.9999));//打印 99 话虽如此,它确实与 Math.flo ..
发布时间:2021-11-25 18:52:06 Java Web开发

Java 转换会引入开销吗?为什么?

当我们将一种类型的对象转换为另一种类型时是否有任何开销?还是编译器只是解决了所有问题而没有运行时的成本? 这是一般的事情,还是有不同的情况? 例如,假设我们有一个 Object[] 数组,其中每个元素可能有不同的类型.但是我们总是可以肯定地知道,比如说,元素 0 是一个 Double,元素 1 是一个字符串.(我知道这是一个错误的设计,但让我们假设我必须这样做.) Java 的类 ..
发布时间:2021-11-25 18:45:37 Java Web开发

java:如何将变量从一种类型动态转换为另一种类型?

我想对 Java 变量进行动态转换,转换类型存储在不同的变量中. 这是常规演员表: String a = (String) 5; 这就是我想要的: String theType = 'String';字符串 a = (theType) 5; 这可能吗,如果可以,怎么办?谢谢! 更新 我正在尝试使用我收到的 HashMap 填充一个类. 这是构造函数: publ ..
发布时间:2021-11-25 18:40:24 Java Web开发