Hello MarkT,
Your explanation sounds good - thank you.
The result from my debugging code-snippet is then (without the L ):
----Delay 1 : 1000000
----Delay 2 : 1000000
----Delay 3 : 16960 ->> not what I meant...
----Delay 4 : 16960 ->> not what I meant...
----Delay 5 : 16960 ->> not what I meant...
----Delay 6 : 1000000
----Delay 7 : 1000000
I did another test with your L - and that is was I found out:
int gugus1 = 10000;
int gugus2 = 10;
long microlis1 = 0;
long microlis2 = 0;
long microlis3 = 0;
long microlis4 = 0;
long microlis5 = 0;
long microlis6 = 0;
long microlis7 = 0;
void loop() {
microlis1 = gugus1 * gugus2 * 1L;
microlis2 = gugus1 * 1L * gugus2;
microlis3 = 1L * gugus1 * gugus2;
microlis4 = long(gugus1 * gugus2);
microlis5 = long(gugus1) * long(gugus2);
microlis6 = 1L * long(gugus1) * gugus2;
microlis7 = 1L * gugus1 * long(gugus2);
Serial.print("GUGUS 1: ");
Serial.println(gugus1);
Serial.print("GUGUS 2: ");
Serial.println(gugus2);
Serial.print("Microlis 1: ");
Serial.println(microlis1);
Serial.print("Microlis 2: ");
Serial.println(microlis2);
Serial.print("Microlis 3: ");
Serial.println(microlis3);
Serial.print("Microlis 4: ");
Serial.println(microlis4);
Serial.print("Microlis 5: ");
Serial.println(microlis5);
Serial.print("Microlis 6: ");
Serial.println(microlis6);
Serial.print("Microlis 7: ");
Serial.println(microlis7);
delay(1000);
}
The result looks like this:
GUGUS 1: 10000
GUGUS 2: 10
Microlis 1: -31072 // seams that the compiler doesn't look at my L on the third position....
Microlis 2: 100000
Microlis 3: 100000
Microlis 4: -31072 // is as you explained - the long() is explizit called and doesn't change the manner how the calculation within the braces is done
Microlis 5: 100000
Microlis 6: 100000 // same as 3
Microlis 7: 100000 // same as 3
... so, I know that I don't know mutch in programming C - it seams I've to bee very carefull on datatypes and calculations between them...
Greetings from switzerland
Thomas