Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

141
Visualizações
¿Es siempre seguro negar un número de coma flotante?

Considerar:

 double f = foo(); double g = -f;

donde foo() puede devolver cualquier cosa que se asigne a f .

es double g = -f; seguro en C y C++? Para los tipos IEEE 754, obviamente lo es, pero C y C ++ no restringen la implementación de punto flotante a eso (a diferencia de Java).

Si es seguro, entonces -g siempre compararía true con foo() ?

(Lo anterior no es cierto para int en complemento a 2).

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Los tipos flotantes están definidos por §5.2.4.2.2 del estándar C (borrador N1570 al menos):

Las características de los tipos flotantes se definen en términos de un modelo que describe una representación de números y valores de punto flotante que proporcionan información sobre la aritmética de punto flotante de una implementación.21) Los siguientes parámetros se utilizan para definir el modelo para cada punto flotante tipo:

  • signo s (±1)
  • b base o raíz de representación exponencial (un entero > 1)
  • e exponente (un número entero entre un mínimo emin y un máximo emax)
  • precisión p (el número de dígitos de base b en la significancia)
  • fk enteros no negativos menores que b (los dígitos significativos)

Un número de coma flotante (x) se define mediante el siguiente modelo:

Entonces, sí, esa expresión es algo segura , excepto en el caso en que foo devuelva uno de los "otros tipos de números de coma flotante" no especificados por el estándar:

Además de los números de punto flotante normalizados (f1 > 0 si x ≠ 0), los tipos flotantes pueden contener otros tipos de números de punto flotante, como números de punto flotante subnormales (x ≠ 0, e = emin , f1 = 0) y números de punto flotante no normalizados (x ≠ 0, e > emin, f1 = 0), y valores que no son números de punto flotante, como infinitos y NaN.

y:

Una implementación puede dar un signo a cero y valores que no son números de punto flotante (como infinitos y NaN) o puede dejarlos sin firmar.

Probablemente haya otras advertencias para esto, pero el estándar incluye bastantes detalles sobre las características de estos tipos. Puede leer todo sobre ellos en este borrador disponible públicamente .

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda