2010-08-14 10 views

Odpowiedz

0

(1,2) ma wartość ostatniego wyrażenia na liście, to znaczy 2.

Inny przykład: (a,b,c) zostanie oceniony na c.

W przypadku, gdy chcesz użyć liczby ułamkowe, użyj pływaka/podwójne typu i używać kropki jako symbol dziesiętny: double d = 1.2;

6

wewnątrz nawiasów, język określa nastąpi wyrazem. W takim przypadku (b) przecinek reprezentuje operator przecinka z C.

Bez nawiasów język określa, że ​​deklaracje zmiennych są oddzielone przecinkami. W przykładzie a, kompilator (analizator składni) oczekuje dodatkowych deklaracji zmiennych.

9

int a = 1,2;2 jest traktowana jako nazwa zmiennej, która nie może rozpoczynać się od numeru, stąd błąd.

int b = (1,2);comma operator ocenia operandy od lewej do prawej i zwraca ostatni wyraz w liście tj 2

3

Powodem tego jest w swoim pierwszym oświadczeniu int a = 1,2; przecinek nie jest analizowany jako operator sekwencja. Jest częścią listy deklaracji i podejmuje próbę utworzenia zmiennej liczbowej o nazwie 2, która nie jest dozwolona w danym języku.

Nawiasy w drugiej instrukcji int b = (1,2); wymuszają analizowanie przecinka jako operatora sekwencji.

0

Żadne z nich nie miało dla mnie sensu na pięści.

Ale potem pamiętałem wiele operacji w pętli for. Np:

for (a=1,b=2; a<1; a++) 

Wiedząc, że jest prawidłowy wyraz, i że wyrażenia są poprawne zbudowanego z grzyba język, mój wniosek jest taki, że (1,2) ocenia 1 (ale nie robi nic z nim), a następnie ocenia 2 i powraca 2.

i wreszcie:

b = (1,2); 

Co robi jest ocenić 1 i 2, jak wcześniej, powrót 2 i przypisać go do b.

Powiązane problemy