Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:users:fun

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
etc:users:fun [2010/01/30 21:49] jcmvbkbcetc:users:fun [2016/08/08 20:53] (current) – ↷ Links adapted because of a move operation kel
Line 49: Line 49:
 Задан источник постоянного тока, но в данном случае это не важно. Свет горит, когда оба выключателя замкнуты на одну внешнюю ветвь. Должно быть решение более сложное, но с одной лампочкой (кстати лампочка обозначена чисто формально, там может быть целая система световых приборов). Задан источник постоянного тока, но в данном случае это не важно. Свет горит, когда оба выключателя замкнуты на одну внешнюю ветвь. Должно быть решение более сложное, но с одной лампочкой (кстати лампочка обозначена чисто формально, там может быть целая система световых приборов).
  
-Может {{etc:users:jcmvbkbc:problems-scheme-2.png|}} ?+Может {{etc:users:jcmvbkbc:problems-scheme-2.png|}} ? ага так, чет про более сложное решение я косанул) 
 + 
 +4. Что делает следующий С++ код? (Matt Marcus) 
 + 
 +<code cpp>. 
 +struct A { 
 +   A(const volatile void*); 
 +}; 
 + 
 +char f(A); 
 +int f(...); 
 + 
 +template <class T> 
 +struct Test { 
 +   static const int value = (sizeof(f(*(T*)0)) == sizeof(char)); 
 +}; 
 + 
 +</code> 
 + 
 +**Решение** 
 +*(T*) 0 - я немного не уверен в этой конструкции (как я понял, (Т*) 0 - это приведение 0 к типу T*, а первая * - это разыменование???), но в целом, (sizeof(f(*(T*)0)) - проверяет размер возвращаемого значения для функции с параметром типа Т, сравнивает с размером типа char, и таким образом, если для Т = А, то (sizeof(f(*(T*)0)) = 1, для T != A, получим (sizeof(f(*(T*)0)) = 4 (ну я принял, что sizeof(char) = 1 и sizeof(int) = 4), ну и в зависимости от того, какой тип передан в качестве T, value равно 0 или нет. Вот как-то так.
etc/users/fun.1264877344.txt.gz · Last modified: 2010/01/30 21:49 by jcmvbkbc