Zvoni
Erfahrenes Mitglied
Mahlzeit C/C++-ler
hab am Wochenende dieses faszinierende Video angeschaut:
YouTube Video
Darauf hin habe ich mal das Netz durchforscht, und unten angeführte "classic"-Versionen gefunden (welche in dieser Form auch im Video genannt/gezeigt werden)
Da ich keinen C-Compiler habe, meine Frage an euch:
Kann mal jemand nen speed-test machen? keine Ahnung, ein paar Millionen mal oder so
Schreibfehler usw. könnt ihr behalten
bin kein c-ler, und ich hab versucht die "New"-Versionen so gut es geht in C zu schreiben
hab am Wochenende dieses faszinierende Video angeschaut:
YouTube Video
Darauf hin habe ich mal das Netz durchforscht, und unten angeführte "classic"-Versionen gefunden (welche in dieser Form auch im Video genannt/gezeigt werden)
Da ich keinen C-Compiler habe, meine Frage an euch:
Kann mal jemand nen speed-test machen? keine Ahnung, ein paar Millionen mal oder so
Schreibfehler usw. könnt ihr behalten
bin kein c-ler, und ich hab versucht die "New"-Versionen so gut es geht in C zu schreiben
C:
int IsLeapYearNew2(int y) {
int d = (y % 100 != 0) ? 4 : 16;
return (y % d == 0);
}
int IsLeapYearNew(int y) {
if (y % 100 != 0) {
return (y % 4 == 0);
} else {
return (y % 16 == 0);
}
}
int IsLeapYearClassic2(unsigned int y) {
return (y % 4 == 0 && (y % 100 != 0 || y % 400 == 0));
}
int IsLeapYearClassic(int y) {
if (y % 400 == 0) {
return 1;
}
else if (y % 100 == 0) {
return 0;
}
else if (y % 4 == 0) {
return 1;
}
else {
return 0;
}
}
int LastDayOfMonthNew(int y, int m) {
if (m==2) return IsLeapYearNew(y) ? 29 : 28; /*oder IsLeapYearNew2*/
return 30 | (m ^ (m >> 3));
}
int LastDayOfMonthClassic(int y,int m){
if (m==2) return IsLeapYearClassic2(y) ? 29 : 28;
int last[]=
{31,28,31,30,31,30,
31,31,30,31,30,31};
return last[m-1];
}