Здравствуйте, 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