Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Operatoren in C

0 views
Skip to first unread message

Ernst Bamann

unread,
Nov 6, 2009, 9:59:04 AM11/6/09
to
Hallo allerseits,
1) In C gibt es zwar den un�ren cast-Operator ()
Es gibt aber auch die Klammerung mit (), um in einem Ausdruck wie z.B:
(a+b)*c
zu veranlassen, dass a+b zuerst berechnet wird.
Ist diese Klammer () auch ein Operator?
Welche Stelligkeit hat er ?
un�r, bin�r oder ten�r

2)
Sind
->
[]
.

auch Operatoren.
Welche Stelligkeit haben sie

3)
Gibt es im Internet eine Tabelle in der die Operatoren mit ihrer
Stelligkeit, Priorit�t und Assoziativit�t erkl�rt werden und als
Tabelle kostenlos downgeloadet werden k�nnen?

mfg
Ernst

Claus Reibenstein

unread,
Nov 6, 2009, 10:37:15 AM11/6/09
to
Ernst Bamann schrieb:

> 1) In C gibt es zwar den un�ren cast-Operator ()
> Es gibt aber auch die Klammerung mit (), um in einem Ausdruck wie z.B:

Es gibt auch noch die Parameter- bzw. Argumentliste bei Funktionen.

> Ist diese Klammer () auch ein Operator?

Nein.

> Sind
> ->
> []
> ..
>
> auch Operatoren.

War das jetzt eine Frage oder eine Feststellung? Wie auch immer: -> und
[] sind (bin�re) Operatoren, und .. gibt es nicht.

> Gibt es im Internet eine Tabelle in der die Operatoren mit ihrer
> Stelligkeit, Priorit�t und Assoziativit�t erkl�rt werden und als
> Tabelle kostenlos downgeloadet werden k�nnen?

Mehrere. Google einfach mal nach "C Operatoren Tabelle" und suche Dir
eine aus.

Gru�. Claus

Message has been deleted

Rainer Weikusat

unread,
Nov 6, 2009, 12:17:36 PM11/6/09
to
r...@zedat.fu-berlin.de (Stefan Ram) writes:

> Ernst Bamann <car...@web.de> writes:
>>Ist diese Klammer () auch ein Operator?
>
> Man kann an Hand von ISO/IEC 9899:1999 (E) nicht belegen,
> da� in der primary expression der Form �( expression )� ein
> Operator vorkommt. Allerdings k�nnte man trotzdem diese
> Auffassung vertreten.

Lediglich waere sie falsch: Die C-Norm enthaelt eine Liste von
Operatoren und so benutzte Klammern sind nicht aufgefuehrt.

[...]

>>2)
>>Sind
>>->
>>[]
>>.
>>auch Operatoren.
>

> Hier kann man an Hand von ISO/IEC 9899:1999 (E) auf Grund
> der �berschrift des Abschnitts belegen, da� es Operatoren
> sind: �6.5.2 Postfix operators�.
>
>>Welche Stelligkeit haben sie
>
> Diese wird in ISO/IEC 9899:1999 (E) nicht explizit genannt,
> aber unter Zugrundelegung des allgemeinen Sprachgebrauchs: 2.

Es wird explizit gennant, zum einen in der Syntaxdefinition, zum
anderen in den Beschreibungen der Operatoren selber:

6.5.2.1 Array subscripting

Constraints
One of the expressions shall have type ``pointer to object
type'', the other expression shall have integer type, and the
result has type ``type''.

6.5.2.3 Structure and union members

Constraints

The first operand of the . operator shall have a qualified or
unqualified structure or union
[betrifft . und ->]

Weil der Text der C-Norm in 'allgemeiner Sprache' verfasst ist,
bedeutet 'wenn man den allgemeinen Sprachgebrauch zugrunde legt'
nichts anderes als 'wenn man den Inhalt des Norm-Textes nicht
ignoriert'.

Claudio Carobolante

unread,
Nov 6, 2009, 7:26:29 PM11/6/09
to
Claus Reibenstein schrieb:
> Ernst Bamann schrieb:


>> 1) In C gibt es zwar den unᅵren cast-Operator ()


>> Es gibt aber auch die Klammerung mit (), um in einem Ausdruck wie
>> z.B:

>> Ist diese Klammer () auch ein Operator?
>
> Nein.

Echt nicht? Wenn ich 6.5 und 6.5.2 nicht falsch verstehe, sollte die
Klammer ein Operator sein. In 6.5.2 werden die Klammern in einem
Atemzug mit den Operatoren ->, [] und . erwᅵhnt. Warum sollten die
Klammern jetzt kein Operator sein, -> und [] aber schon?

cc

Claus Reibenstein

unread,
Nov 6, 2009, 7:43:39 PM11/6/09
to
Claudio Carobolante schrieb:

> Claus Reibenstein schrieb:
>
>> Ernst Bamann schrieb:
>>
>>> 1) In C gibt es zwar den unᅵren cast-Operator ()
>>> Es gibt aber auch die Klammerung mit (), um in einem Ausdruck wie
>>> z.B:
>>> Ist diese Klammer () auch ein Operator?
>>
>> Nein.
>
> Echt nicht? Wenn ich 6.5 und 6.5.2 nicht falsch verstehe, sollte die
> Klammer ein Operator sein.

Ich sehe weder in 6.5 (Expressions) noch in 6.5.2 (Postfix Operators)
irgendeinen Hinweis auf solche Klammern.

Ich wᅵrde es mal mit 6.5.1 (Primary Expressions) versuchen.

> In 6.5.2 werden die Klammern in einem
> Atemzug mit den Operatoren ->, [] und . erwᅵhnt.

Wo denn?

Gruᅵ. Claus

Thomas Koller

unread,
Nov 7, 2009, 3:14:07 AM11/7/09
to
Claudio Carobolante <w...@carobolante.net> wrote:
> Claus Reibenstein schrieb:
>> Ernst Bamann schrieb:
>>> 1) In C gibt es zwar den un�ren cast-Operator ()

>>> Es gibt aber auch die Klammerung mit (), um in einem Ausdruck wie
>>> z.B:
>>> Ist diese Klammer () auch ein Operator?
>>
>> Nein.
>
> Echt nicht? Wenn ich 6.5 und 6.5.2 nicht falsch verstehe, sollte die
> Klammer ein Operator sein.

Eigentlich echt nicht. M�glich dass du es falsch verstehst.

Die Klamer um die es hier geht ist in 6.5.1 beschrieben
"A parenthesized expression is a primary expression."

Und im Gegensatz zu 6.5.2ff ist in 6.5.1 nicht von "Operator"
dir Rede.

> In 6.5.2 werden die Klammern in einem

> Atemzug mit den Operatoren ->, [] und . erw�hnt. Warum sollten die


> Klammern jetzt kein Operator sein, -> und [] aber schon?

Verwechselst du eventuell die Klammerung um einen Ausdruck (s.o.) mit dem
Funktionsaufruf in 6.5.2.2?

Wie beim Cast wird da auch eine Klammer verwendet, aber das ist nicht
das was der OP gemeint hat.

Tom

Claudio Carobolante

unread,
Nov 7, 2009, 8:22:04 AM11/7/09
to
Claus Reibenstein schrieb:

> Claudio Carobolante schrieb:
>> Claus Reibenstein schrieb:
>>> Ernst Bamann schrieb:
>>>
>>>> 1) In C gibt es zwar den unᅵren cast-Operator ()
>>>> Es gibt aber auch die Klammerung mit (), um in einem Ausdruck wie
>>>> z.B:
>>>> Ist diese Klammer () auch ein Operator?
>>>
>>> Nein.
>>
>> Echt nicht? Wenn ich 6.5 und 6.5.2 nicht falsch verstehe, sollte
>> die Klammer ein Operator sein.
>
> Ich sehe weder in 6.5 (Expressions) noch in 6.5.2 (Postfix
> Operators) irgendeinen Hinweis auf solche Klammern.
>
> Ich wᅵrde es mal mit 6.5.1 (Primary Expressions) versuchen.

Ja, Du hast vollkommen recht und Thomas auch. Entschuldigung, ich
hᅵtte wirklich genauer hinschauen sollen.

cc

0 new messages