日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++基础回顾-强制类型转换

發(fā)布時間:2025/3/15 c/c++ 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++基础回顾-强制类型转换 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

直接上代碼

float a = 1.0f; cout << (int)a << endl; cout << (int&)a << endl; cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么? float b = 0.0f; cout << (int)b << endl; cout << (int&)b << endl; cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么?

請問輸出結果如何?

1 1065353216 false 0 0 true

為什么0.0f和1.0f有這么大的差別呢?讓我們反匯編看看代碼如何?

00931620 push ebp 00931621 mov ebp,esp 00931623 sub esp,0D8h 00931629 push ebx 0093162A push esi 0093162B push edi 0093162C lea edi,[ebp-0D8h] 00931632 mov ecx,36h 00931637 mov eax,0CCCCCCCCh 0093163C rep stos dword ptr es:[edi] float a = 1.0f; 0093163E fld1 //將1.0f裝載到st(0) 00931640 fstp dword ptr [a] cout << (int)a << endl; 00931643 mov esi,esp 00931645 mov eax,dword ptr [__imp_std::endl (93D31Ch)] 0093164A push eax 0093164B fld dword ptr [a] //st0 = a 0093164E call @ILT+340(__ftol2_sse) (931159h) //具體做什么不太清楚好像望城了從float到long類型的轉換,得到的值為1 00931653 mov edi,esp 00931655 push eax 00931656 mov ecx,dword ptr [__imp_std::cout (93D318h)] 0093165C call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D314h)] 00931662 cmp edi,esp 00931664 call @ILT+505(__RTC_CheckEsp) (9311FEh) 00931669 mov ecx,eax 0093166B call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D310h)] 00931671 cmp esi,esp 00931673 call @ILT+505(__RTC_CheckEsp) (9311FEh) cout << (int&)a << endl; 00931678 mov esi,esp 0093167A mov eax,dword ptr [__imp_std::endl (93D31Ch)] 0093167F push eax 00931680 mov edi,esp 00931682 mov ecx,dword ptr [a] //輸出a地址內容(強制將內容轉換為int類型),a內存中的內容為3f800000(float的編碼方式),強制轉換為int類型得到了3f800000的10進制值 00931685 push ecx 00931686 mov ecx,dword ptr [__imp_std::cout (93D318h)] 0093168C call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D314h)] 00931692 cmp edi,esp 00931694 call @ILT+505(__RTC_CheckEsp) (9311FEh) 00931699 mov ecx,eax 0093169B call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D310h)] 009316A1 cmp esi,esp 009316A3 call @ILT+505(__RTC_CheckEsp) (9311FEh) cout << boolalpha << ( (int)a == (int&)a ) << endl; // 輸出什么? 009316A8 mov esi,esp 009316AA mov eax,dword ptr [__imp_std::endl (93D31Ch)] 009316AF push eax 009316B0 fld dword ptr [a] 009316B3 call @ILT+340(__ftol2_sse) (931159h) 009316B8 cmp eax,dword ptr [a] //(1==0x3f800000)肯定輸出false 009316BB sete cl 009316BE mov edi,esp 009316C0 movzx edx,cl 009316C3 push edx 009316C4 mov ebx,esp 009316C6 push offset std::boolalpha (931113h) 009316CB mov ecx,dword ptr [__imp_std::cout (93D318h)] 009316D1 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D30Ch)] 009316D7 cmp ebx,esp 009316D9 call @ILT+505(__RTC_CheckEsp) (9311FEh) 009316DE mov ecx,eax 009316E0 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D308h)] 009316E6 cmp edi,esp 009316E8 call @ILT+505(__RTC_CheckEsp) (9311FEh) 009316ED mov ecx,eax 009316EF call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D310h)] 009316F5 cmp esi,esp 009316F7 call @ILT+505(__RTC_CheckEsp) (9311FEh) float b = 0.0f; 009316FC fldz 009316FE fstp dword ptr [b] cout << (int)b << endl; 00931701 mov esi,esp 00931703 mov eax,dword ptr [__imp_std::endl (93D31Ch)] 00931708 push eax 00931709 fld dword ptr [b] 0093170C call @ILT+340(__ftol2_sse) (931159h) 00931711 mov edi,esp 00931713 push eax 00931714 mov ecx,dword ptr [__imp_std::cout (93D318h)] 0093171A call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D314h)] 00931720 cmp edi,esp 00931722 call @ILT+505(__RTC_CheckEsp) (9311FEh) 00931727 mov ecx,eax 00931729 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D310h)] 0093172F cmp esi,esp 00931731 call @ILT+505(__RTC_CheckEsp) (9311FEh) cout << (int&)b << endl; 00931736 mov esi,esp 00931738 mov eax,dword ptr [__imp_std::endl (93D31Ch)] 0093173D push eax 0093173E mov edi,esp 00931740 mov ecx,dword ptr [b] 00931743 push ecx 00931744 mov ecx,dword ptr [__imp_std::cout (93D318h)] 0093174A call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D314h)] 00931750 cmp edi,esp 00931752 call @ILT+505(__RTC_CheckEsp) (9311FEh) 00931757 mov ecx,eax 00931759 call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D310h)] 0093175F cmp esi,esp 00931761 call @ILT+505(__RTC_CheckEsp) (9311FEh) cout << boolalpha << ( (int)b == (int&)b ) << endl; // 輸出什么? 00931766 mov esi,esp 00931768 mov eax,dword ptr [__imp_std::endl (93D31Ch)] 0093176D push eax 0093176E fld dword ptr [b] 00931771 call @ILT+340(__ftol2_sse) (931159h) 00931776 cmp eax,dword ptr [b] //b對應內容為0x00000000,轉換之后依然為0所以相等 00931779 sete cl 0093177C mov edi,esp 0093177E movzx edx,cl 00931781 push edx 00931782 mov ebx,esp 00931784 push offset std::boolalpha (931113h) 00931789 mov ecx,dword ptr [__imp_std::cout (93D318h)] 0093178F call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D30Ch)] 00931795 cmp ebx,esp 00931797 call @ILT+505(__RTC_CheckEsp) (9311FEh) 0093179C mov ecx,eax 0093179E call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D308h)] 009317A4 cmp edi,esp 009317A6 call @ILT+505(__RTC_CheckEsp) (9311FEh) 009317AB mov ecx,eax 009317AD call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (93D310h)] 009317B3 cmp esi,esp 009317B5 call @ILT+505(__RTC_CheckEsp) (9311FEh)

如此就可以推導出結果對應為

1

0x3f800000

false

0

0  

true

轉載于:https://www.cnblogs.com/SkyMouse/archive/2012/05/06/2485982.html

總結

以上是生活随笔為你收集整理的C++基础回顾-强制类型转换的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 精品动漫一区二区三区在线观看 | 午夜视频国产 | 中文字幕不卡av | 久久久久亚洲av无码专区首jn | 国产精品毛片一区 | 99中文字幕在线观看 | 毛片基地在线观看 | 日韩一区二区三区不卡视频 | 国产91热爆ts人妖系列 | 成人免费看片载 | 国产精品伦一区二区三级古装电影 | 爱如潮水3免费观看日本高清 | 农村脱精光一级 | av在线精品 | 亚洲一区二区三区四 | 久久久久久亚洲精品中文字幕 | 午夜三区 | 亚洲色图 一区二区 | 超碰免费在线播放 | 韩国av免费观看 | 91视频免费观看 | 午夜视频在线观看国产 | 蜜桃视频在线播放 | 黄色av一级片 | 亚洲一区二区三区无码久久 | 伊人伊人伊人伊人 | 国产免费中文字幕 | 99精品一区二区 | 一级免费视频 | 波多野结衣二区三区 | 欧美另类高清 | 在线资源站 | 少妇激情网 | 自拍 亚洲 欧美 | 激情亚洲天堂 | 亚洲精品理论 | 天堂av免费在线 | 亚洲精品高清视频在线观看 | 日韩国产中文字幕 | 波多野结衣大片 | 大学生三级中国dvd 日韩欧美一区二区区 | 精品乱码一区二区三区 | 伊人天堂在线 | chinese麻豆gay勾外卖 | 新91在线| 综合久草 | 在线观看视频一区二区三区 | 漂亮人妻洗澡被公强 日日躁 | 亚洲大胆人体 | 毛片a区 | 精品视频免费观看 | 亚洲精品久久久久久国产精华液 | 三上悠亚人妻中文字幕在线 | 美丽的姑娘观看在线播放 | 性欧美大战久久久久久久 | 麻豆亚洲| 91娇羞白丝 | 国产精华7777777 | 四虎影院新网址 | 欧美精品一区二区三区四区 | 伊人天天干 | 91麻豆产精品久久久久久 | 性欧美一区| 国产精品作爱 | 激情福利视频 | 精品成人一区二区 | 在线观看视频91 | 中文成人在线 | 91在线不卡 | 少妇学院在线观看 | 久久99精品国产.久久久久久 | 国产在线视频网站 | 黄色免费在线观看视频 | 亚洲骚| 日韩爽片 | 国产精品无码av在线播放 | 国产99re | 一级特黄毛片 | 午夜香蕉网 | 久久精品一区二区三区黑人印度 | 韩日一区二区三区 | 亚洲图片偷拍区 | 免费人妻一区二区三区 | 日韩精品在线一区 | 日日日干| 日韩 欧美 自拍 | 国产一级在线播放 | 欧美91在线| 成人网在线视频 | 成人久久久精品乱码一区二区三区 | 亚洲天堂av中文字幕 | 人妻互换一区二区激情偷拍 | 欧美成人精品欧美一 | 黄色小说视频网站 | 深夜福利网站 | 美女黄页网站 | 五月天丁香在线 | 久久精品香蕉视频 | 亚洲av成人精品日韩在线播放 |