
Kul att det går framåt iallafall
Swech
Kod: Markera allt
if((T1 / T2) > 0.7 && (T1 / T2) < 0.75)
printdigit(3,10,5);
Kod: Markera allt
if((T1 / T2) > 0,7 && (T1 / T2) < 0,75)
printdigit(3,10,5);
Kod: Markera allt
temp = ((T1 / T2) - 0,320) / 0,00470;
Kod: Markera allt
if ((T1/T2) > 0.7 && (T1/T2) < 0.75)
Kod: Markera allt
if ((T1/T2) > 0 && (T1/T2) < 0)
Kod: Markera allt
if (((float)T1/(float)T2) > 0.7 && ((float)T1/(float)T2) < 0.75)
Kod: Markera allt
if (i > 0,1,2,3,4,5)
Kod: Markera allt
if (i > 5)
Kod: Markera allt
int i, j;
for (i=0, j=5; i < 10; i++, j+=2)
{
...
}
Kod: Markera allt
if (7)
{
}
Sorry, men jag orkar inte läsa igenom hela den här tråden, jag bara läste slutet och konstaterade att flera här inte förstår att decimaltal måste skrivas med decimalpunkt (.) samt att decimalkomma (,) är sekvensoperator.you lost me... vad har det att göra med kompileringsproblemet ?
Nej, nej, nej!om jag spränger uttrycket i bitar:
(T1 och T2 är heltal, och T1 är alltid mindre än T2)
if((T1 / T2) > 0,7 && (T1 / T2) < 0,75)
gör något;
betyder att (T1/T2) blir till ett float resultat som sedan kollas om den är större än 0,7 AND mindre än 0,75.
I detta fallet initierar jag T1 och T2 till 450, resp. 602 för debuggingändamål. Resultatet är 0,747 vilket skulle rendera uttrycket till Sant
Kod: Markera allt
if(75)
Igen, komma är sekvensoperator.Och det fungerar också, för
if((T1 / T2) > 0,7 && (T1 / T2) < 0,75)
printdigit(5,5,5);
ger exekvering av printdigit och en femma ploppar upp i displayen.
Däremot gör det inte om jag skriver
if((T1 / T2) > 0.7 && (T1 / T2) < 0.75)
med punkt.
Om man säger att komma INTE är decimal avgränsare, då borde det ovannämnda inte fungera, eller ?
Prova själva, det tar trettio sekunder att skriva koden i MPLAB...
Hur som helst, min fråga gäller fortfarande MPLAB och/eller C kompilatorns oförmåga att acceptera 0,0047
Kod: Markera allt
unsigned short long T1 = 0;
unsigned short long T2 = 0;
T1 = 450;
T2 = 602;
float T3 = 0;
T3 = T1 / T2; // detta borde producera 0.747 vilket ÄR större än 0.7 och mindre än 0.75
if( (T3 > 0.7) && (T3 < 0.75) )
printdigit(3,10,5); //DETTA HÄNDER ALDRIG
__delay_us(1);
Kod: Markera allt
T3 = T1 / T2; // detta borde producera 0.747...
Kod: Markera allt
float T3 = 0;
T3 = 0.747
if( (T3 > 0.7) && (T3 < 0.75) )
printdigit(3,10,5);
Tror jag inte en sekund på, åtminstone skulle jag inte anställa dig. Detta är riktigt grundläggande kunskaper i C.jag är programmerare sedan 10 år tillbaka i halvdussin olika språk
Kod: Markera allt
unsigned short long T1 = 0;
unsigned short long T2 = 0;
Kod: Markera allt
T1 = 450;
T2 = 602;
float T3 = 0;
T3 = T1 / T2; // detta borde producera 0.747 vilket ÄR större än 0.7 och mindre än 0.75