数据类型转换教程.doc
文本预览下载声明
数据类型转换
一、隐式类型转换
1)简单数据类型
(1)算术运算
转换为最宽的数据类型
eg:
[cpp] view plain copy
#include iostream
using std::cout;
using std::endl;
int main(int argc, char* argv[])
{
int ival = 3;
double dval = 3.14159;
cout ival + dval endl;//ival被提升为double类型
return 0;
}
其运行结果:
6.14159
int main(int argc, char* argv[])
{
010D17D0 push ebp
010D17D1 mov ebp,esp
010D17D3 sub esp,0DCh
010D17D9 push ebx
010D17DA push esi
010D17DB push edi
010D17DC lea edi,[ebp-0DCh]
010D17E2 mov ecx,37h
010D17E7 mov eax,0CCCCCCCCh
010D17EC rep stos dword ptr es:[edi]
int ival = 3;
010D17EE mov dword ptr [ival],3
double dval = 3.14159;
010D17F5 movsd xmm0,mmword ptr [__real@400921f9f01b866e (010D6B30h)]
010D17FD movsd mmword ptr [dval],xmm0
cout ival + dval endl;//ival被提升为double类型
010D1802 mov esi,esp
010D1804 push offset std::endlchar,std::char_traitschar (010D1064h)
010D1809 cvtsi2sd xmm0,dword ptr [ival]
010D180E addsd xmm0,mmword ptr [dval]
010D1813 mov edi,esp
010D1815 sub esp,8
010D1818 movsd mmword ptr [esp],xmm0
010D181D mov ecx,dword ptr [_imp_?cout@std@@3V?$basic_ostream@DU?$char_traits@D@std@@@1@A (010D90A8h)]
010D1823 call dword ptr [__imp_std::basic_ostreamchar,std::char_traitschar ::operator (010D90A0h)]
010D1829 cmp edi,esp
010D182B call __RTC_CheckEsp (010D111Dh)
010D1830 mov ecx,eax
010D1832 call dword ptr [__imp_std::basic_ostreamchar,std::char_traitschar ::operator (010D90A4h)]
010D1838 cmp esi,esp
010D183A call __RTC_CheckEsp (010D111Dh)
return 0;
010D183F xor eax,eax
}
010D1841 pop edi
}
010D1842 pop esi
010D1843 pop ebx
010D1844 add esp,0DCh
010D184A cmp ebp,esp
010D184C call __RTC_CheckEsp (010
显示全部