Gast
#2602988
Hallo, ich habe noch nicht so viel Erfahrung im Programmieren mit C (WinAVR) und dem Attiny und habe mich gewundert, dass folgendes nicht funktioniert: // funktioniert nicht unsigned short Delta_t = 3000; unsigned long temp1 = Delta_t * 30; temp = temp1/(3*3906); // funktioniert unsigned short Delta_t = 3000; unsigned long temp1 = Delta_t * 3; temp = temp1/(3*391); Es gibt ein Überlauf in temp1, obwohl ich für das Ergebnis ein unsigned long spendiere. Wenn ich 2 unsigned short miteinander multipliziere, bekomme ich dann wieder ein unsigned short oder bekomme ich dann ein unsigned long? Die Wahrscheinlichkeit, dass es zu einem Überlauf bei der Multiplikation von 2 unsigned short Werten kommt ist doch relativ hoch, warum macht der Kompiler dann kein unsigned long draus, speziell, wenn ich das Ergebnis sogar einem UL zuweise??? Wie gehts denn richtig? Danke.