оператор декремента против оператора вычитания

Если я напишу код вроде (в c)

    x=1;
    z=2;
    y=x---z;

будут первые два - рассматриваться как пост-декремент, а затем один как вычитание

или первый - будет рассматриваться как вычитание, а два других как предварительный декремент

и что, если я поставлю пробел, чтобы сделать его другим (потому что в программе c не меняется пробел)


person Dhruva Mehrotra    schedule 03.11.2015    source источник
comment
Также более конкретный дубликат здесь.   -  person Lundin    schedule 03.11.2015


Ответы (1)


Согласно стандарту C11, глава §6.4, лексические элементы, (выделено мной)

Если входной поток был разобран на токены предварительной обработки до заданного символа, следующим токеном предварительной обработки будет самая длинная последовательность символов, которая может составить токен предварительной обработки. [..]

So,

y=x---z;

is

y= (x--) - z;

Это также называется правилом максимального количества пищи.

person Sourav Ghosh    schedule 03.11.2015
comment
но я всегда думал, что пустое пространство не имеет значения в c - person Dhruva Mehrotra; 03.11.2015
comment
@DhruvaMehrotra, если только они не используются в качестве разделителей, как здесь... - person Sourav Ghosh; 03.11.2015