Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   -- in C & Pointer (https://www.delphipraxis.net/107649-c-pointer.html)

ferby 31. Jan 2008 01:18


-- in C & Pointer
 
Hallo,

Ich schreib grad mein erstes großes C Programm (XML Pharser ;-) )

Dabei habe ich folgendes



int *Pfad_Tag_Nr;


so jetzt weiß ich einenen Wert zu und dann kommt die Zeile

*(Pfad_Tag_Nr)--;

Ich will den Wert auf den der Pointer zeigt um eins erniedrigen,
leider kommt da ein Pfusch raus. (Glaub die Adresse wird um eins erniedrigt)

Mit
*(Pfad_Tag_Nr)=*(Pfad_Tag_Nr)-1;


gehts.


Meine Frage is jetzt:

Wenn

*(Pfad_Tag_Nr)--;

nicht das gleiche wie

*(Pfad_Tag_Nr)=*(Pfad_Tag_Nr)-1;

ist, was ist dann

*(Pfad_Tag_Nr)--;

ausgeschrieben???


Verwende Visual Studie 2005

JasonDX 31. Jan 2008 01:39

Re: -- in C & Pointer
 
Es geht um Operatorenprioritäten. -- hat eine höhere Priorität als der Dereferenzierungs-Operator (*), die Binäre Subtraktion - wird allerdings erst nach dem * ausgewertet.
Sprich hier wie der Parser deine Ausdrücke interpretiert:
Code:
*(p)--
wird zu
*(p--)

*p = *p - 1
hingegen zu
(*p) = ((*p) - 1)
hier findest du (nach unten scrollen oder nach "priority" suchen) die Operator-Prioritäten, in welcher Reihe sie ausgewertet werden ;)

greetz
Mike

ferby 31. Jan 2008 02:21

Re: -- in C & Pointer
 
Also wäre das was ich will

Delphi-Quellcode:
(*(Pfad_Tag_Nr))--

JasonDX 31. Jan 2008 02:32

Re: -- in C & Pointer
 
Zitat:

Zitat von ferby
Also wäre das was ich will

Delphi-Quellcode:
(*(Pfad_Tag_Nr))--

Ja - durch die Klammerung spezifizierst du, dass die Dereferenzierung vor der Dekrementierung durchgeführt werden soll.
Falls der Term alleinstehend ist, kannst du die Klammern auch sparen, und das ganze so lösen:
Code:
--*Pfad_Tag_nr;
Wobei man dann pro gespartem Zeichen 2 extra Kommentare berechnen darf :lol:

greetz
Mike

alzaimar 31. Jan 2008 07:55

Re: -- in C & Pointer
 
Dieser Thread ist ein Paradebeispiel dafür, wie gut C und C++ wirklich ist.
Zitat:

Zitat von JasonDX
Wobei man dann pro gespartem Zeichen 2 extra Kommentare berechnen darf :lol:

Speziell der letzte Post zeigt dies eindrucksvoll.

Frage: Wieso schreibst Du 2008 dein erstes C-Programm? Wieso nicht C#? Das ist eine schöne Sprache. Fast so hübsch wie Delphi.

Xong 31. Jan 2008 08:00

Re: -- in C & Pointer
 
Zitat:

Zitat von alzaimar
Frage: Wieso schreibst Du 2008 dein erstes C-Programm?

Vielleicht weil C an Universitäten immer noch als Beispielsprache gelehrt wird.
Und diese Sprache hatte nicht ohne Grund so viel Erfolg. Auch heute noch wird es bei der maschinennahen Entwicklung genutzt.

alzaimar 31. Jan 2008 08:12

Re: -- in C & Pointer
 
Zitat:

Zitat von Xong
Zitat:

Zitat von alzaimar
Frage: Wieso schreibst Du 2008 dein erstes C-Programm?

Vielleicht weil C an Universitäten immer noch als Beispielsprache gelehrt wird.

So wie Brainfuck :mrgreen:

Nee, is schon klar, war nur etwas Polemik und OT von mir. Genug jetzt. :zwinker:

DMW 31. Jan 2008 19:25

Re: -- in C & Pointer
 
Zitat:

Zitat von alzaimar
Dieser Thread ist ein Paradebeispiel dafür, wie gut C und C++ wirklich ist.

Glücklicherweise sagt der THread nichts über die Qualität von C und insbesondere C++ in den richtigen Händen aus ;)

alzaimar 1. Feb 2008 07:03

Re: -- in C & Pointer
 
Zitat:

Zitat von DMW
Glücklicherweise sagt der Thread nichts über die Qualität von C und insbesondere C++ in den richtigen Händen aus ;)

Och, C ist nicht 'besser' als Delphi, nur weiter verbreitet. Aber das ist eh eine Glaubensfrage und bevor wir uns duellieren, einigen wir uns auf 'Jedem das Seine' und freuen uns täglich neu über Exploits, die Dank der weiten Verbreitung und Sicherheit dieses Makro-Assemblers entdeckt werden.

Wie Du schon sagtest: In den richtigen Händen ist C eine total geil kompakte und auch sichere Sache. Leider gibt es nicht so viele 'richtige Hände'.... Das gilt aber auch für (fast) jede andere Sprache.

Was ich hier blöd finde, ist die Mehrdeutigkeit (im Verständnis) eines Ausdruckes wie *p--. Ich meine, das ist die kürzeste Klausurfrage in der IT:
Zitat:

Erkläre *p--

Xong 1. Feb 2008 07:10

Re: -- in C & Pointer
 
Zitat:

Zitat von alzaimar
Was ich hier blöd finde, ist die Mehrdeutigkeit (im Verständnis) eines Ausdruckes wie *p--. Ich meine, das ist die kürzeste Klausurfrage in der IT:
Zitat:

Erkläre *p--

Das macht sie aber auch so reizend. Am gereiztesten reagier ich immer auf... *scnr* :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:22 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz