Re[10]: Инициализация int
От: fay Украина www.bekhter.net
Дата: 08.10.09 18:59
Оценка:
Здравствуйте, igna, Вы писали:

I>Здравствуйте, fay, Вы писали:


I>
fay>>std::wstring strOwner( ((bal..bla) ? L"admin" : L"user") );
I>


fay>>Но мне эта запись глаза режет.


I>А эта:?


I>
I>std::wstring strOwner = (bal..bla) ? L"admin" : L"user";
I>

Так нормально, но для отладки удобен if, и судя по коду оптимизатору с if легче
int main( int argc, char **, char ** ) {
   std::wstring str1;
   if( argc )
      str1 = L"123";   
   else
      str1 = L"456";   

   std::wcout << str1 << std::endl;

   std::wstring str2 = (argc) ? L"678"
                              : L"012";   

   std::wcout << str2 << std::endl;

   return 0;
}



; 231  :    if( argc )
   mov   edi, DWORD PTR _argc$[esp+84]
   mov   DWORD PTR __$EHRec$[esp+96], ebx

; 232  :       str1 = L"123";   
   push  3
   lea   ecx, DWORD PTR _str1$[esp+92]
   cmp   edi, ebx
   je SHORT $LN2@main
   push  OFFSET $SG155640

; 233  :    else
   jmp   SHORT $LN160@main
$LN2@main:

; 234  :       str1 = L"456";   
   push  OFFSET $SG155642
$LN160@main:
   call  ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign


; 237  : 
; 238  :    std::wstring str2 = (argc) ? L"678"
; 239  :                               : L"012";   
   mov   edx, OFFSET $SG155682
   cmp   edi, ebx
   jne   SHORT $LN6@main
   mov   edx, OFFSET $SG155683
$LN6@main:
   xor   eax, eax
   mov   WORD PTR _str2$[esp+92], ax
   mov   eax, edx
   mov   DWORD PTR _str2$[esp+112], 7
   mov   DWORD PTR _str2$[esp+108], ebx
   lea   esi, DWORD PTR [eax+2]
$LL157@main:
   mov   cx, WORD PTR [eax]
   add   eax, 2
   cmp   cx, bx
   jne   SHORT $LL157@main
   sub   eax, esi
   sar   eax, 1
   push  eax
   push  edx
   lea   ecx, DWORD PTR _str2$[esp+96]
   call  ?assign@?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@QAEAAV12@PB_WI@Z ; std::basic_string<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::assign
Best regards,
Oleg Bekhter
Software Developer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.