2013-09-24 4 views
-4

В C99, 6.5.3 Unary operators:сколько унарные операторы в языке C

Syntax 
1 unary-expression: 
postfix-expression 
++ unary-expression 
-- unary-expression 
unary-operator cast-expression 
sizeof unary-expression 
sizeof (type-name) 
unary-operator: one of 
& * + - ~ ! 

Это говорит о том, что унарный-оператор является одним из &, *, +, -, ~, !, так что я думаю, что ++, -- и sizeof не являются унарными операторами, не так ли?

+0

42? .................. –

+1

Оператор 'sizeof' принимает только одно выражение, поэтому он определенно унарный. То же самое для любого другого оператора «унарный» означает, что для одного операнда «двоичный» требуется один операнд. –

+0

Из статьи [Wikipedia articel on «унарный»] (http://en.wikipedia.org/wiki/Unary_operation): «В математике унарная операция - это операция только с одним операндом, т. Е. С одним входом». То же самое и в программировании. –

ответ

3

Лингвистически фраза unary-operator: one of & * + - ~ ! означает, что они являются унарными операторами, но не обязательно единственными унарными операторами. Если фраза вместо этого интерпретируется математически, можно считать, что они являются единственными унарными операторами.

Название главы - «Унарные операторы», которая указывает, что первая интерпретация является правильной. ++, --, casts и sizeof также являются унарными операторами.

+0

, но в msdn http://msdn.microsoft.com/en-us/library/y0c1cfax.aspx. Он не говорит, что броски также являются унарными операторами? – airalert

+0

Является ли язык, определенный Microsoft или стандартом? Страница MS не является строго строгой. На этой странице говорится, что существует три типа операторов: унарный, двоичный и тройной. Тем не менее, на http://msdn.microsoft.com/en-us/library/fyy30xyk.aspx говорят, что приводы также являются операторами. У ролей есть один операнд, поэтому по определению они унарные. –

Смежные вопросы