ison |
» 2010-12-27 17:19:43 @jsc nie ma takiej odpowiedzi :p pytałem co jest lepsze z tych dwóch wyżej wymienionych @Iname przy okazji: czy to prawda że if( a != 0 ); jest lepszym rozwiązaniem od if( a ); ? to samo tyczy się if( !a ); ? |
|
DejaVu |
» 2010-12-27 17:22:12 WOJNA!!!! :P Już się pokłóciliście? :) |
|
Elaine |
» 2010-12-27 17:27:46 czy to prawda że if( a != 0 ); jest lepszym rozwiązaniem od if( a ); ? |
W wynikowym kodzie różnicy żadnej nie ma, w drugiej wersji to porównanie też jest, tylko niejawne ;> Pierwsza wersja jest jednak przez niektórych uważana za czytelniejszą (a przez innych ta druga) ;>
to samo tyczy się if( !a ); ? |
Tak, też nie ma różnicy ;> |
|
F90M |
» 2010-12-27 18:30:10 Po co ta cała szopka jsc? Może i twój kod jest szybszy (ja wcale się nie głowiłem nad tym aby zasuwał jak Ferrari), tylko co z tego skoro wyniki które daje nie zgadzają się z tym Teraz sytuacja wygląda tak: Najmniejsza wartość a to 5 i gdy a=5 to b=1 i c=1, ale jak a=6 to b=2 i c=1, a=7 to b=2 i c=2, a=8 to b=3 i c=2, a=9 to b=3 i c=3 itd. |
#include <iostream>
int main() { int b, c; std::cout << "F90M:\n"; for( int a = 0; a < 10; ++a ) { b =( a - a % 2 ) / 2 - 1; c =( a + a % 2 ) / 2 - 2; std::cout << "a = " << a << ", b = " << b << ", c = " << c << "\n"; } std::cout << "\njsc:\n"; for( int a = 0; a < 10; ++a ) { b = a / 2; c = a +(( a % 2 ) == 1 ); std::cout << "a = " << a << ", b = " << b << ", c = " << c << "\n"; } }
Wyjście: F90M: a = 0, b = -1, c = -2 a = 1, b = -1, c = -1 a = 2, b = 0, c = -1 a = 3, b = 0, c = 0 a = 4, b = 1, c = 0 a = 5, b = 1, c = 1 a = 6, b = 2, c = 1 a = 7, b = 2, c = 2 a = 8, b = 3, c = 2 a = 9, b = 3, c = 3
jsc: a = 0, b = 0, c = 0 a = 1, b = 0, c = 2 a = 2, b = 1, c = 2 a = 3, b = 1, c = 4 a = 4, b = 2, c = 4 a = 5, b = 2, c = 6 a = 6, b = 3, c = 6 a = 7, b = 3, c = 8 a = 8, b = 4, c = 8 a = 9, b = 4, c = 10
|
|
jsc Temat założony przez niniejszego użytkownika |
» 2010-12-27 19:25:11 No masz prawdę, ale mój kod poprawiłem na: for (long int a1=0; a1 < 1000000000; ++a1) //JSC daje 12 sek. { long int a2, b, c; a2 = a1 - 3; b = a2/2; c = b + (a2%2); } czas = czas - time (NULL);
Błąd wziął się z tego, że źle przepisałem z tematu głównego. Tam masz wyliczenie, że kod działa. |
|
pekfos |
» 2010-12-27 19:34:05 WOJNA!!!! :P Już się pokłóciliście? :) |
co poradzisz? ja nie znam implementacji mojego kompilatora więc nie będę dołączał do tej wojny :P |
|
Elaine |
» 2010-12-27 20:02:47 Za późno, i tak już się dołączyłeś pisząc coś niekoniecznie zgodnego z prawdą. :P |
|
pekfos |
» 2010-12-27 20:20:19 racja, za późno. nowoczesne kompilatory i tak zoptymalizują kod lepiej od nas.. |
|
1 2 « 3 » 4 5 6 7 8 |