2015-09-04 7 views
5

Wiem, że na przykład '5' jest literał typu char, ale jest 5 * 5 literał? Jest to wyrażenie, ale ma ustaloną wartość.Czy 5 * 5 jest dosłownym lub po prostu wyrażeniem?

+7

Możesz chcieć wskazać jakiego języka używasz. –

+1

I prawdopodobnie, którego parsera/kompilatora używasz. Inteligentny powinien automatycznie przekształcić '5 * 5' na' 25' jeśli działa z operacjami matematycznymi. –

+1

@AndrewGrimm Wydaje mi się, że jest to oczywiste, że jego Java rozważa tag #java. – Craig

Odpowiedz

1

Nie sądzę, że można to nazwać dosłownym. Możliwe, że niektóre kompilatory potraktują to w taki sam sposób, w jaki traktują dosłownie, zobacz komentarz na temat języka, którego używasz.

12

Jak opisano w Java Language Specification §15.28, jest to szczególny przypadek wyrażenia o nazwie "wyrażenie ciągłe w czasie kompilacji". To nie jest dosłowne.

+2

Nie ma sposobu na odczytanie z kodu bajtowego, czy zostało to zapisane jako '5 * 5' lub' 25' +1. –

1

"Literalny" jest terminem gramatycznym, a nie semantycznym. Jest to podstawowy element konstrukcyjny oznaczający stałą wartość.

Chociaż według specyfikacji 5 * 5 i 25 oznacza dokładnie to samo, gramatycznie pierwszym jest wyrażenie binarne zawierające dwa literały i operator, a drugie jest po prostu literałem.

0

Nie jestem pewien, ale czy te warunki nie działają tak?

  • podczas korzystania z jakąś wartość dokładnie określić wartość zmiennej „w prostej drodze” powinien być nazywany jako „dosłowne”

    var num =5; var stringLabel = "someText"; itp

  • podczas korzystania z jakąś formułę lub na receptę powinno być nazywane "wyrażeniem"

    var result = 5*5; var res2 = a*x;

Ale oczywiście-w wyniku, które również stały si to również może być dosłowne w rzeczywistości ..

to jak zdobyć przynajmniej mnie ..

To właśnie o warunkach - Podobnie jak w java istnieją metody, "języki C" są funkcjami itd. - w znaczeniach są to te same rzeczy, więc to zależy tylko od limitu, co będzie w ogóle tolerować: D