类型转换扯的淡

2024-09-01 05:32
文章标签 类型转换

本文主要是介绍类型转换扯的淡,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

今天在看一位作者写的多线程文章时中间有这么一句代码:

handle[i] = (HANDLE)_beginthreadex(arg...);

_beginthreadex()这个函数返回的是一个unitptr_t类型,而handle[i]是一个句柄数组,所以需要一步类型转换
当时我想到如果用C++11定义的类型转换可能会比较好一点吧,不用那种C风格字符串了。于是很自然的把代码改成了下面这样

handle[i] = staic_cast<HANDLE>(_beginthreadex(arg...));

不过编译器却报错了。报错为

:不能进行从整形到指针类型的转换

后来用reinterpret_cast搞定了
上了权威网站查了之后发现reinterpret_cast<new type>(expr)进行type*type 的类型转换,中间有这么一句话

A value of any integral or enumeration type can be converted to a pointer type

至于static_cast为什么不行?
static_cast
上面给的可以用static_cast进行转换的9种情况中,并没有type to *type

参考资料:
reinterpret_cast

这篇关于类型转换扯的淡的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1126080

相关文章

【C++高阶】C++类型转换全攻略:深入理解并高效应用

📝个人主页🌹:Eternity._ ⏩收录专栏⏪:C++ “ 登神长阶 ” 🤡往期回顾🤡:C++ 智能指针 🌹🌹期待您的关注 🌹🌹 ❀C++的类型转换 📒1. C语言中的类型转换📚2. C++强制类型转换⛰️static_cast🌞reinterpret_cast⭐const_cast🍁dynamic_cast 📜3. C++强制类型转换的原因📝

【oracle CLOB】ORACLE CLOB 类型转换为字符串

在ORACLE 中存储 大量 文本 超过了 3000个汉字 varchar 装不下 迫不得已使用了 : CLOB 类型 写sql 时如果字段是CLOB类型,必须转换为类型。 CLOB 类型转换为字符串: dbms_lob.substr(FILTER_TEXT,100000) select to_char(GMT_CREATE,'yyyy-mm-dd') as M1,dbms_lob.sub

C++隐式类型转换问题

问题描述:隐式类型转换问题 if (optimize_param.dynamic_lds_size > 64UL * 1024UL) 这里在64后面加上UL表示“usigned long“类型的常量,为了防止在计算或者比较过程中出现类型转换的问题。 举例说明隐式类型转换问题: #include <iostream>int main(int argc, char const *argv[]

SpringMVC使用:类型转换数据格式化数据验证

01-类型转换器 先在pom.xml里面导入依赖,一个是mvc框架的依赖,一个是junit依赖 然后在web.xml里面导入以下配置(配置的详细说明和用法我在前面文章中有写到) 创建此测试类的方法用于测试springmvc是具备自动类型转换功能的 user属性如下 show.jsp内容如下 在客户端输入如下数据 输出如下重点看日期他给转换了,说明springm

JavaScript学习(四):JavaScript类型转换以及变量作用域

3.8 类型转换 JavaScript中的取值类型非常灵活,从布尔值可以看到这一点:当JavaScript期望使用一个布尔值的时候,可以提供任何值,JavaScript将根据需要自行转换类型,真值转换成true,假值转换成false 3.8.1 转换和相等性 因为JavaScript可以做灵活的类型转换,因此“=="相等运算符也随相等的

语言中的类型转换

编程语言中必然有很多情况需要转换类型。比如引入const的概念就为了提高安全性,编译器提前检查,避免一些意外修改。当然,有时,我们希望手动转换一个变量的类型,让其变成常量,可以利用编译器提供的cast方法。 C++早期提供了const_cast,写法繁琐,C++17引入std::as_const写法更轻松,C++20引入bit_cast可实现位级别复制,而非普通float和int转换后丢失小数位

隐式类型转换/匿名对象的使用以及构造拷贝构造的优化

示例一: class A{private:int _n;public:A(int n){_n = n;cout << "A()" << endl;}A(const A& a){cout << "A(const A& a)" << endl;}~A(){cout << "~A()" << endl;}};void func(A a){} 对于func可以有如下三种调用 int mai

C++中的类型转换,以及与C的区别

编程的时候,类型转换在某些紧要的关头是必需品。 C风格的类型转换,相对C++风格的类型转换来说,比较粗鲁,C风格的类型转换,能允许任何类型之间进行转换,在编写C++程序时是也可以使用的,要进行精确的类型转换时,这是一个优点。但是,正是这样的优点,使C风格的类型转换,在编写程序时,容易出现类型不明,转换失误,并且在程序语句中难以识别,可读性较差,在编写C++程序时,建议使用C++中的类型转换。

‌JavaScript 数据类型转换

JavaScript 数据类型转换主要分‌显式转换‌‌隐式转换‌两种。‌ -‌显式转换‌:‌ 使用转换函数,‌如Number()、‌String()、‌Boolean()等,‌直接对数据进行类型转换。‌ 利用parseInt()、‌parseFloat()等函数,‌将字符串转换为数字类型。‌ -‌隐式转换‌:‌ 在进行运算或比较时,‌JavaScript 会自动将数据转换为适合的类型,‌如

19. 为什么int i = 5.0;可以编译通过,隐式类型转换的定义,为什么需要,以及其应用场景和注意事项。

在 C 语言中,int i = 5.0; 之所以可以编译通过,是因为 C 语言的隐式类型转换机制会自动将浮点数 5.0 转换为整数 5,然后赋值给变量 i。这一行为是符合 C 语言规范的,下面是详细的分析。 1. 隐式类型转换(Implicit Type Conversion) C 语言是一种强类型语言,但它具有一定的灵活性,允许编译器在某些情况下自动进行隐式类型转换(也叫类型提升或类型收缩)