Dictate order that operands are evaluated in c -
the statement puts("a") + puts("b")
undefined. because not specified in c standard whether these ought executed left right or right left get
a b
or
b
is there clean way dictate order of operations in expression?
the thing can think of use compound statement such as
({ int temp = puts("a"); temp += puts("b"); temp; })
though non-portable , little longer hoping.
how best achieved?
if declare int
variable before expression, can force order portably comma operator while computing sum inside expression:
int temp; ... (temp = puts("a"), temp + puts("b"))
as specified in c standard:
6.5.17 comma operator
syntax
expression: assignment-expression expression , assignment-expression
semantics
the left operand of comma operator evaluated void expression; there sequence point between evaluation , of right operand. right operand evaluated; result has type , value.
note value of expression not useful given semantics of puts()
, commented jonathan leffler.
Comments
Post a Comment