Seite 197 von 202 ErsteErste ... 97147187193194195196197198199200201 ... LetzteLetzte
Ergebnis 2.941 bis 2.955 von 3026

Thema: [Programmiererstammtisch] "Zum ächzenden Compiler"

  1. #2941
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    'len-1' wäre sogar die falsche Interpretation, da ich ja wirklich das Element vor dem aktuellen haben will.
    Man sieht auch, dass beide Varianten auf das gleiche Byte zeigen.

    Der C99-Standard besagt auch, dass die zwei Dinge gleich sein müssen:
    That is correct. From C99 §6.5.2.1/2:
    The definition of the subscript operator [] is that E1[E2] is identical to (*((E1)+(E2))).
    Aber ich habe die Ursache jetzt gefunden
    Problem ist, dass die Schrittweite als 'unsigned int' übergeben wird. '-stepwidth' ist daher sehr groß, auch wenn der Pointer am Ende aufs gleiche Element zeigt.
    Der Überlauf löst dann die Exception aus.

    Caste ich vorher zu int, geht es
    Code:
     dPi[(int)-stepwidth]

  2. #2942
    Wolf im Krokodilpelz Avatar von Mongke Khan
    Registriert seit
    25.06.11
    Ort
    KA
    Beiträge
    19.088
    Code:
    #include <iostream>
    
    void test(int a, int b) {
        switch (a) {
            case 0:
                if (b > 0) {
                    std::cout << "case 0\n";
                    
                    case 1:
                    std::cout << "case 1\n";
                }
                break;
            default:
                std::cout << "default \n";
        }
    }
    Zitat Zitat von Ghaldak Beitrag anzeigen
    Wären die Beiträge der Admins alles, was zählt, dann wäre dieses Forum eine Geisterstadt mit Adventskalender.

  3. #2943
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.479
    *brr*
    Ist doch das hier?

    Code:
    if (a && b)
    print("case 0")
    /*
    elseif (a && !a)
    print("case 1")
    */
    else
    print("default")

  4. #2944
    Wolf im Krokodilpelz Avatar von Mongke Khan
    Registriert seit
    25.06.11
    Ort
    KA
    Beiträge
    19.088
    test(1,0) gibt tatsächlich "case 1" aus

  5. #2945
    ¡Olé! Avatar von Harleen
    Registriert seit
    07.01.06
    Ort
    Bremen
    Beiträge
    9.359
    Zitat Zitat von Flunky Beitrag anzeigen
    *brr*
    Ist doch das hier?

    Code:
    if (a && b)
    print("case 0")
    /*
    elseif (a && !a)
    print("case 1")
    */
    else
    print("default")
    Nö, da nach dem ersten cout kein break steht, wird "case 0" immer zusammen mit "case 1" ausgegeben.
    Aber wer schreibt bitte solchen Code? Das erinnert mich ein wenig an Duff's Device .

  6. #2946
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Mongke Khan Beitrag anzeigen
    test(1,0) gibt tatsächlich "case 1" aus
    Jetzt ergibt sich die Anschlussfrage ob nur 'break; }' vor 'case 1' vergessen wurde oder
    ob es absichtlich so geschrieben wurde.

    Ist jedenfalls sehr schön wie das 'b > 0' unterwandert wird

    Zitat Zitat von Harleen Beitrag anzeigen
    Nö, da nach dem ersten cout kein break steht, wird "case 0" immer zusammen mit "case 1" ausgegeben.
    Aber wer schreibt bitte solchen Code? Das erinnert mich ein wenig an Duff's Device .
    Cool, darüber (Namen und den C-Trick an sich) bin ich noch nie gestolpert. Hatte allerdings selber letzte Woche erst in Assembler genau das beschrieben Verfahren angewendet, um in eine For-Schleife zu springen

  7. #2947
    Registrierter Benutzer
    Registriert seit
    21.03.12
    Beiträge
    22.479
    Achja stimmt.

    Also:

    Code:
    if (a && b)
      print("case 0")
    elseif (!a && b)
      print("case 1")
    else
      print("default")
    'b > 0' wirkt schon, wär für die Lesbarkeit nur besser außerhalb des switch aufgehoben.


    Code:
    if (b) 
      if (a)
        print("case 0")
      else
        print("case 1")
    else 
      print("default")

  8. #2948
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.481
    Ich habe hier einen Zeitstempel in einer Logdatei, 31.12.1969 23:59. Das geht doch gar nicht! Das ist doch vor dem Urknall!
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  9. #2949
    Kunst am Arier Avatar von Snup
    Registriert seit
    09.12.09
    Ort
    Halle
    Beiträge
    12.984
    -1?

  10. #2950
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.481
    Das Ende Der Anfang ist nah! Läutert euch!
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  11. #2951
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Unix-Zeitstempel sind signed. Nebulös wird es bei einer Anzeige vor 13. Dez. 1901 20:45:52

  12. #2952
    Frühstücksbonze Avatar von Gullix
    Registriert seit
    21.07.10
    Beiträge
    13.481
    Wieder was gelernt.
    Mit Naturgesetzen kann man nicht verhandeln. --Harald Lesch

    Ein Atomkrieg würde die Menschheit auslöschen. Hätte aber auch Nachteile.

  13. #2953
    Registrierter Benutzer
    Registriert seit
    29.06.06
    Ort
    Schwabenländle
    Beiträge
    2.371
    Weis jemand wieso die Formel nicht funktioniert?

    =INDEX(Lieferscheine!B3:B26;KKLEINSTE(WENN(Lieferscheine!G3:G26=TEIL(ZELLE("Dateiname";$A$ 1);SUCHEN("]";ZELLE("Dateiname";$A$1))+1;31);ZEILE(Lieferscheine!G3:G26)-ZEILE(Lieferscheine!G3)+1);ZEILEN(Lieferscheine!G3:G4)))

    Die Funktion soll in die Werte aus Spalte B übernehmen, wenn der Wert in Spalte G mit dem Tabellenblattnamen überein stimmt. Er sagt #NV. Der Tabellenblattname wird korrekt ausgegeben. Dollarzeichen sind noch nicht aktiv vergeben.

    Ich nutze eine Index-Funktion, weil keine leeren Zeilen angezeigt werden sollen und weil der sverweis nicht funktioniert, da die Tabelle hunderte identische Werte in Spalte G hat. Im Kern soll die Formel die Zeilen aus "Lieferscheine" verteilen auf die anderen Tabellenblätter anhand der Tabellenblattnamen.

    Ich befürchte irgendwas kleines Peinliches. Da die Formel im abgewandter Form so bereits existiert und funktioniert in einer anderen Datei und von da rauskopiert und angepasst wurde. Die Unterfunktion, den Tabellenblattnamen auszulesen funktioniert.


    Danke für eure Hilfe.
    Ich bin Legastheniker. Wer also Rechtschreibfehler oder unklare Formulierungen findet, darf sie gerne behalten :)

    Ich nutze in allen meinen Beiträgen grundsätzlich die in meinen Augen geschlechtsneutrale Bezeichnung, sofern ich keinen konkretes Objekt oder eine Person meine. So sind Äußerungen wie DER Lehrer oder DIE Krankenschwester oder DER Pfleger lediglich Berufsbezeichnungen und daher geschlechtsneutral in meinen Augen, ebenso wie DER Mond oder DIE Sonne.

  14. #2954
    Hüter des Chaos Avatar von Jeckchen
    Registriert seit
    13.07.18
    Ort
    Aachen
    Beiträge
    1.029
    So etwas ähnliches hatte ich letzte Woche auf der Arbeit gemacht. Bei mir sieht die Formel so aus:

    =WENNFEHLER(KKLEINSTE(WENN(Elevators_Input!C:C=$C$3;Elevators_Input!A:A);ZEILE()-ZEILE($B$5));"")

    Elevators_Input!C:C müßte bei Dir Lieferscheine!b:B sein, C3 ist bei Dir der Tabellenname und Zeile()-Zeile($B$5) ist die 1. 2. 3. oder 4. etc. Position für kkleinste. Das Wennfehler ist drin, damit wenn keine Einträge mehr vorhanden sind keine Fehlermeldungen da stehen.

    Edit: Das ganze muss natürlich bei älteren Excel-Versionen als Matrix-Formel eingegeben werden (CTRL-SHIFT+EINGABETASTE).
    Ein Tag ohne Lachen ist ein verlorener Tag!

  15. #2955
    Registrierter Benutzer
    Registriert seit
    29.06.06
    Ort
    Schwabenländle
    Beiträge
    2.371
    Hab den Fehler gefunden.

    Die Matrix hat scheinbar ein Problem damit wenn Fehler auftreten KÖNNEN. Denn als ich alle Formeln in der Tabelle auf die die Index-Funktion zugreift, mit Wennfehler erweitert habe (es gab Fehler für leere Felder in der Ausgangstabelle, das ist aber gewollt, hat auf Dauer optisch aber gestört), hat es funktioniert. Wieso weis ich aber nicht wirklich. Die Matrixtabelle hatte zwar Fehler, aber die waren alle gewollt und bei den zwei Testzeilen gab es keinen Fehlerwert. Zumindest die zwei Zeilen hätte er also nehmen müssen.


    Ist es möglich, das Excel ohne Makro Daten "speichert"?
    Ich bekomme jeden Monat zwei neue Tabellen mit Verbrauch und Preis. Die Idee ist, diese in ein tabellenblatt einzufügen und das Excel füllt per Formel die Auswertungen aufgrund dieser Daten aus. Wenn ich dann neue Daten in das tabellenblatt einfüge, soll er aber das bestehende nicht überschreiben oder null anzeigen sondern behalten und dafür eine Spalte weiter rechts ausfüllen. Wie ich das machen will, weis ich. Die Frage ist, wie bringe ich Excel dazu, wenn die Daten nicht mehr vorhanden sind, da drüberkopiert, sie dennoch zu behalten.

    Hat da jemand ne Idee oder auch ne andere Idee wie ich das umsetzen kann. Ich hoffe ich habe mich verständlich ausgedrückt. Makros sind nicht erlaubt und gesperrt und daher keine Option, sonst hätte ich die Abfragen über ein Button über dem Monat gemacht, so das die Abfragen nicht permanente Formel sind sondern nur auf Knopfdruck ausgeübt wird.
    Ich bin Legastheniker. Wer also Rechtschreibfehler oder unklare Formulierungen findet, darf sie gerne behalten :)

    Ich nutze in allen meinen Beiträgen grundsätzlich die in meinen Augen geschlechtsneutrale Bezeichnung, sofern ich keinen konkretes Objekt oder eine Person meine. So sind Äußerungen wie DER Lehrer oder DIE Krankenschwester oder DER Pfleger lediglich Berufsbezeichnungen und daher geschlechtsneutral in meinen Augen, ebenso wie DER Mond oder DIE Sonne.

Seite 197 von 202 ErsteErste ... 97147187193194195196197198199200201 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •