2016-07-21 1 views
3

Pourquoi ne pouvons-nous écrirePourquoi la plupart des langages de programmation n'acceptent pas les virgules en nombre?

int n=1,000; 

? Pourquoi les langages de programmation ne sont pas conçus pour permettre des virgules?

Pourquoi les langages de programmation ne sont pas conçus pour permettre des virgules? Aurons-nous des problèmes si cela permet des virgules?

+1

Dans Swith, vous pouvez utiliser '_', par ex. 'let n = 1_000' –

+0

Je pense que la plupart des langages que j'ai utilisés supportent' _' en littéraux entiers. Je suppose que les virgules sont utilisées pour séparer les paramètres dans les appels de méthode/fonction. Donc en utilisant des virgules dans les nombres peut causer de la confusion au compilateur et au code de lecture unique? – Sweeper

+0

car c'est un caractère réservé pour la syntaxe – kurakura88

Répondre

6

Parce que , est souvent un opérateur ou a une signification particulière dans la plupart des langues.

Il serait donc difficile ou impossible de déterminer si setColor(4,242,242) était un appel avec trois arguments (4, 242 et 242) ou un seul argument (4242242).

Certaines langues, comme Swift, acceptent les nombres avec _ pour faciliter la lecture. Par exemple 1_000 est le même que 1000.

Pour plus de référence sur l'analyse, je vous suggère de lire the Wikipedia article Lexical analysis.

+0

Bon point sur les arguments !!! – Gqqnbig

0

Dans de nombreux langages, les virgules sont traitées comme une forme de construction de langage. Par exemple, dans les tableaux:

var array = [0,1,2,3,4]; 

Ou, dans certains cas concaténation de chaînes en ligne:

var string1 = "yay"; 
var string2 = "me"; 
var output = string1, string2; 

langues différentes ont des implémentations différentes. Vous pouvez toujours utiliser des expressions régulières pour "corriger" l'entrée de l'utilisateur avec des virgules.

Si vous devez absolument utiliser des virgules dans vos variables, vous devrez probablement utiliser des chaînes. Qui peut ensuite être converti en nombres à l'aide d'expressions régulières ou de votre langage parseAsInt(); ou parseAsFloat(); équivalent.