Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > Hallo Hannes, > > ich mußte erst mal selber darauf kommen: > > Bei der Division "b=a/10;", wird 10 als signed Datentyp angenommen. Und sind im Ausdruck signed und > unsigned gemischt, so hat signed Priorität. Es wird also eine signed Division durchgeführt. > > Folgendes Programm zeigt dir richtigen Werte: > > word a,b,c; > > void main(void) > { > c=10; > for (a = 31000; a < 34000; a=a+100) > { > b = a/c; > Msg_WriteWord(a); > Msg_WriteChar(0x20); // Leerzeichen > Msg_WriteWord(b); > Msg_WriteChar(0x0D); // CR > AbsDelay(200); > } > > while(1); > } > > Ich werde den Compiler so erweitern, daß man numerische Konstanten explizit als unsigned definieren > kann. > > Gruss Peter > > > Hi, > > > > eine ganz einfache Rechnung aber leider falsch sobald der Dividend größer 32800 wird. > > Es ändert sich nichts wenn man den Datentyp von word auf unsigned int ändert. > > > > Gruss > > > > > > Interpreter gestartet - 2kb RAM > > 31000 3100 > > 31100 3110 > > 31200 3120 > > 31300 3130 > > 31400 3140 > > 31500 3150 > > 31600 3160 > > 31700 3170 > > 31800 3180 > > 31900 3190 > > 32000 3200 > > 32100 3210 > > 32200 3220 > > 32300 3230 > > 32400 3240 > > 32500 3250 > > 32600 3260 > > 32700 3270 > > 32800 62263 > > 32900 62273 > > 33000 62283 > > 33100 62293 > > 33200 62303 > > 33300 62313 > > 33400 62323 > > 33500 62333 > > 33600 62343 > > 33700 62353 > > 33800 62363 > > 33900 62373 > > _____________________________________________________________ > > > > word a,b; > > > > void main(void) > > { > > for (a = 31000; a < 34000; a=a+100) > > { > > b = a/10; > > Msg_WriteWord(a); > > Msg_WriteChar(0x20); // Leerzeichen > > Msg_WriteWord(b); > > Msg_WriteChar(0x0D); // CR > > AbsDelay(200); > > } > > > > while(1); > > } > > > >