Hello.<br><br>Any normal C/C++ compiler always tries<br>to calculate all possible expressions in<br>preprocessig stage.<br><br>In your first case, if you declared a as a local variable, compiler will calculate <br>50*20 in preprocessing stage and will proguce<br>the approximately following assembler code:<br><br>...<br>movl $1000, -xxx(%ebp)<br>...<br><br>In second case, expression b*c cannot be evaluated neither in preprocessing stage<br>nor in compilation stage. It can be evaluated<br>only in runtime. As compilation result you<br>will get the following assembler code:<br><br>...<br>movl $20, -xxx(%ebp)<br>movl $50, -yyy(%ebp)<br>movl -xxx(%ebp), %eax<br>imul -yyy(%ebp), %eax<br>movl %eax, -zzz(%ebp)<br>...<br><br>Bye. <p>Victor Ustymchuk<br><a href=mailto:snake@jb.rovno.ua>snake@jb.rovno.ua</a><br><a href= > </a><br>