Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

0!=0

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    0!=0

    Väike huvitav juhtumine, oli 1 seade mille pakett sisaldas CRC-d.
    oli võrdlus
    Kood:
    if(ftemp==(FR_CRC+1)){...
    nüüd kui ftemp on 0 ja FR_CRC on 255 ei ole vastus tõene, märge veel et mõlemad muutujad on unsigned char. Tegemist on GNUARM GCC-ga Ja peaks olema viimane versioon. Tulemus oli et Framing_Error_Count jooksis teatud pakettide peale üles. Kui arvestada et miski 2 nädalat selle alla tööd siis pole enam nii naljakas.
    Modelleerimises ja tootmises kehtivad:
    1. Avariikindel vooluring lühistab kõik teised.
    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

    #2
    Vs: 0!=0

    C standardi kohaselt, enne igasuguste tehete tegemist, k.a. võrdlustehet, teisendatakse operandid int'iks või unsigned int'iks.

    Vähemalt said jagu
    If you think education is expensive, try ignorance.

    Comment


      #3
      Vs: 0!=0

      Neid c kalasid on veelgi, seepärast tasub hoiduda liigsest ühele reale kokku kirjutamisest.
      Täitsa eraldi kategooria on signed ja unsigned tüüpide korraga kasutamine. Kunagi astusin sellise reha peale (kompilaatoriks oli gcc 3.4.2):
      Kood:
      #include <stdio.h> 
      
      void main(void){ 
      int x; 
      unsigned int y; 
      
      x=-2; 
      y=3; 
      
      printf ("%d", x<y ); 
      }
      Vastus? 0

      Veel üks valusam reha, mis meelde tuleb, oli seotud C++ andmetüübiga bool. Seal tuleb olla äärmiselt ettevaatlik konstruktsiooniga ==true, sest bool tüüp on tegelikult int ja true==1, false==0. Ühes programmikeses kirjutati ühes struktuuris eelmist elementi üle serva nii, et bool'i väärtuseks sai 3. Kuna 3!=true ja 3!=false, siis edasine programmi käitumine läks vägagi müstiliseks kätte. Seega edaspidi väldin ==true kasutamist ja kasutan selle asemel !=false, et vältida anomaaliaid kolmandast olekust.

      Comment


        #4
        Vs: 0!=0

        Lihtne soovitus on mitte kasutada "nippe". Praktika ütleb, et "kavala" koodi asemel on enamasti odavam võtta kiirem prose. Enam ei ole 80ndad.
        Matemaatiliselt korrektne ja hästi loetav kood tuleb odavam kätte ja poole aasta pärast saad ise ka aru mida kirjutasid.

        C on sellest vaatepunktist ikka väga kole keel. Aga noh, de facto standart nii et katsume siis orkide keeles haldjajuttu ajada

        Comment


          #5
          Vs: 0!=0

          Minu case puhul oli prosel rammu küllaga, PC koos oma akendega op süsteemiga + labview oli pudelikael, seetõttu pidin lollikindlast paketist tegema nuditud paketti mis oleks piisavalt kiire. PC suhtles 5 seadmega igaüks 0,4megabaudi. masin mille peal katsetasin oli umbes 1000x rammusam kui need prosed. Tulemus, 164k testprogrammi laadminie võttis enne 27 minutit per kaart siis uue softiga u 15 kõik kaartid.
          Modelleerimises ja tootmises kehtivad:
          1. Avariikindel vooluring lühistab kõik teised.
          2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

          Comment


            #6
            Vs: 0!=0

            Esmalt postitatud andreie poolt
            C standardi kohaselt, enne igasuguste tehete tegemist, k.a. võrdlustehet, teisendatakse operandid int'iks või unsigned int'iks.
            Ai kui rumal ma mõnikord olen. Tegelik viga on selles: 1 on arvliteraal, tüübiks signed int. Sellest tulenevalt FR_CRC-le samuti tüübitõstmine int-iks (sest int on esimene, mis mahutab tervet unsigned char väärtuste vahemikku) ja edasi saate ise aru...

            Selliste vigade puhul aitab:
            1. piibli läbilugemine ja harjutusülesannete läbitegemine. See ei võta niipalju aega, kui arvatakse. Hommikuti on hea kulutada õppimisele paar tundi, pea on siis värske.
            2. silur (debugger). Näiteks uutel AVR-idel on JTAG port täiesti olemas, miks mitte kasutada.

            Last but not least:käige ikka minu sõnade, mitte minu tegude järgi.
            If you think education is expensive, try ignorance.

            Comment

            Working...
            X