C++ 14 ha introdotto il concetto di separatori di cifre in letterali, sulla falsariga di 3'141'592'653'589
. Ora questa è una grande funzionalità per codice leggibile, ma mi chiedevo se consentiva di virgolette prima dello la porzione numerica di un letterale di tipo 0x/0b
. Mi sembra che:I separatori di cifre sono consentiti prima delle cifre in un numero esadecimale o binario?
unsigned int topThreeBits = 0b'1110'0000;
unsigned int hexNum = 0x'dead'beef;
è più leggibile di quella senza un separatore leader:
unsigned int topThreeBits = 0b1110'0000;
unsigned int hexNum = 0xdead'beef;
perché delinea chiaramente la base dalle cifre.
Dal momento che non ho ancora un compilatore C++ 14, ho bisogno di confermare in un modo o nell'altro se consentire ciò.
So che non ha senso per numeri non prefissati come '123'456
, soprattutto perché il parser non saprebbe se doveva essere una variabile char
o un valore letterale numerico.
Ma, per letterali prefissati, non posso vedere c'è qualche confusione su ciò che il token è destinato a essere al primo punto '
arriva - il 0x/0b
ha già dettata sarà un letterale numerico.
Mi sono chiesto lo stesso. Come dice la risposta, non può essere fatto (ancora?). Quindi per ottenere numeri simmetrici/stuzzichini/ecc., Dobbiamo accontentarci della prossima cosa migliore: '0b0'1110'0000' ([hmm] (https://sites.google.com/site/ohmusicstudent/_/rsrc/ 1315398151002/band-instruments/oboe/oboe-history/oboe2.gif)) e '0x0'dead'beef' ([omg] (http://londonpride.com/wp-content/uploads/2013/09/Oxo__Beef________4c23b399c6687. jpg)) –
@underscore_d, il principale '0' è in realtà un'idea brillante, non una che avevo pensato. Lo zero iniziale non ha alcun effetto sul valore e consente comunque una "porzione di numero reale" visivamente distinta. – paxdiablo
Sì, semplice ma efficace, ea volte queste cose sono facili da perdere :-) –