прост съмнение в C!

T

truebs

Guest
Здрасти,

Ние всички знаем, че за х = 2

Y = X; Y става 3
Y = X ; Y става 2 и х става 3 в двата случая.

Но тъй като на принципа на precendance ...Оператор е по-голям приоритет, отколкото = оператор.
Тогава, както и на precendance ..Y трябва да стане 3 в двата случая, поради по-високите precendance да от =.

Но това не се случи, защо?Каква е възможно грешка или поведение на компилатор?

Благодаря ..

 
evaluating the expression
.

"Y = X " означава увеличение х след
оценка на изразяване.Така че в този случай, изразът се оценява като х все още се равнява на 2, като по този начин създаването Y на 2, и то след тази оценка е завършен, х се увеличава.

 
Това е вярно.Определение на изпълнение и предимство са две различни, независими неща.

 
Напълно съм съгласен с lambtron и echo47, X и X , са две различни неща.
Може би, ако кода е:
X;
X ;
След това спечели тон се голяма разлика, но тъй като сте добавили = изтичането те ще са две различни ефекти.

 
Здрасти,

в това изявление:

х = * BUF ;

означава, че х равнява на * BUF, но за следващия случай BUF пункта до следващия адрес в паметта.

Ако ти пиша;

х = * (BUF );

Х равен на стойността на адрес (BUF 1),

това е трик!

 

Welcome to EDABoard.com

Sponsor

Back
Top