Skip to content

Instantly share code, notes, and snippets.

// Los literales almacenados en ‘patata’ y ‘frita’ son iguales?
auto patata = 237498123;
auto frita = 237499123;
// Que variable guarda el numero es mas grande? ‘a’ o ‘valor’?
auto a = 237499123;
auto valor = 20249472;
// ‘patata’ y ‘frita’ no son iguales!
auto patata = 237’498’123;
auto frita = 237’499’123;
// ‘valor’ es menor que ‘a’!
auto a = 237’499’123;
auto valor = 20’249’472;
auto binario = 0b1001’1001;
auto octal = 01’234’567;
auto decimal = 1’123’567;
auto hexadecimal = 0xab’cdef;
auto cientifica = 1.602’176’565e-19;
@VitaminaCPP
VitaminaCPP / const_contra_define_00_es.cpp
Created August 26, 2014 19:20
Código candidato a usar una constante: El número 40 carece de significado por si mismo.
int Baraja[40] = { 0 };
for (int indice = 0; indice < 40; ++indice)
{
Baraja[indice] = indice;
}
std::random_shuffle(std::begin(Baraja), std::end(Baraja));
@VitaminaCPP
VitaminaCPP / const_contra_define_01_es.cpp
Created August 26, 2014 19:22
Si sustituimos el 40 por una constante bien nombrada, el código pasa a tener un significado más claro.
const int CARTAS_EN_BARAJA_ESPANYOLA = 40;
int Baraja[CARTAS_EN_BARAJA_ESPANYOLA] = {0};
for (int indice = 0; indice < CARTAS_EN_BARAJA_ESPANYOLA; ++indice)
{
Deck[indice] = indice;
}
std::random_shuffle(std::begin(Baraja), std::end(Baraja));
@VitaminaCPP
VitaminaCPP / const_contra_define_02_es.cpp
Created August 26, 2014 19:23
Constante PI creada con la directiva de Preprocesador #define.
#define PI 3.14159265358979323846f;
float SphereVolume(float radius)
{
return (4.0f * PI * std::pow(radius, 3.0f)) / 3.0f;
}
float CilinderVolume(float radius, float height)
{
return (2.0f * PI * std::pow(radius, 2.0f) * height);
@VitaminaCPP
VitaminaCPP / const_contra_define_03_es.cpp
Created August 26, 2014 19:24
El compilador recibiría este código de parte del Preprocesador tras substituir el #define PI.
float SphereVolume(float radius)
{
return (4.0f * 3.14159265358979323846f * std::pow(radius, 3.0f)) / 3.0f;
}
float CilinderVolume(float radius, float height)
{
return (2.0f * 3.14159265358979323846f * std::pow(radius, 2.0f) * height);
}
@VitaminaCPP
VitaminaCPP / const_contra_define_04_es.cpp
Created August 26, 2014 19:26
Problemas con la directiva #define: creación innecesaria de objetos.
#define CARROT_CAKE “Carrot Cake”
const std::string PUMPKIN_CAKE(“PumpkinCake”);
void CookCake(const std::string &CakeToCook)
{
std::cout << “The “ << CakeToCook << “ is almost Cooked!\n”;
}
void ServeCake(const std::string &CakeToServe)
{
@VitaminaCPP
VitaminaCPP / const_contra_define_05_es.cpp
Created August 26, 2014 19:27
Cuando el Preprocesador recorre el código, sustituye la etiqueta CARROT_CAKE por la cadena de texto “Carrot Cake”.
int main(int argc, char **argv)
{
// usando #define CARROT_CAKE
CookCake(“Carrot Cake”);
ServeCake(“Carrot Cake”);
EatCake(“Carrot Cake”);
// usando const std::string PUMPKIN_CAKE
CookCake(PUMPKIN_CAKE);
ServeCake(PUMPKIN_CAKE);
@VitaminaCPP
VitaminaCPP / const_contra_define_06_es.cpp
Created August 26, 2014 19:45
El uso de constantes #define para crear cadenas de texto, puede dar lugar a otro comportamiento inesperado y difícil de detectar
const std::string CONST(“allyourbasearebelongtous”);
#define DEFINE “schrodingercat”
int main(int argc, char **argv)
{
bool Result = false;
if (argc == 2)
{
std::cout << “\tAccess “;