Сори, не видях че си писал 'Сън' отпред. Помислих, че имаш предвид Студиото и затова реагирах така бурно - него доста добре го познавам. Но твърдението продължавам да си го поддържам.
Примерът ти е крайно недостатъчен за да ми даде увереност, че е така. Да си припомним условието ( ще се самоцитирам ):
Кажи един компилатор на C, който пълни автоматичните променливи с 0 в Release версията на изхода? Аз всъщност силно бих се изненадал ако и в Debug пълни точно с 0, но да кажем че е възможно (макар и малко вероятно).
Пробвай това със и без оптимизация и като кажеш какво печати пак ша говорим:
#include <stdio.h>
void DoNothing( const void *p ) { p; }
unsigned CountNonzeroBytes( const void *pv, size_t sz )
{
unsigned count;
const char *p = pv;
DoNothing(&count);
for ( ; sz ; --sz, ++p )
{
if ( *p )
{
++count;
}
}
return count;
}
unsigned f()
{
int count;
int a, b;
int a100int[100];
int c, d;
count += CountNonzeroBytes(&count, sizeof(count));
count += CountNonzeroBytes(&a, sizeof(a));
count += CountNonzeroBytes(&b, sizeof(b));
count += CountNonzeroBytes(&a100int, sizeof(a100int));
count += CountNonzeroBytes(&c, sizeof(c));
count += CountNonzeroBytes(&d, sizeof(d));
return count;
}
int main(void)
{
fprintf( stdout, "%d\n", f() );
fprintf( stdout, "%d\n", f() );
return f();
}
System Doctor Error:
Your girlfriend is pregnant.
(A)bort, (M)arry, (I)gnore?_