Maison >développement back-end >C++ >Existe-t-il une fonction de signe standard dans C/C pour déterminer le signe des valeurs numériques ?

Existe-t-il une fonction de signe standard dans C/C pour déterminer le signe des valeurs numériques ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-25 06:52:12810parcourir

Is There a Standard Sign Function in C/C   for Determining the Sign of Numerical Values?

Détermination du signe des valeurs numériques en C/C

En programmation, détermination du signe des valeurs numériques ( 1 pour positif, -1 pour négatif) est une opération courante. Bien qu'il soit possible d'implémenter des fonctions de calcul de signe personnalisées, on peut se demander s'il existe une solution standardisée.

Fonction de signe standard en C/C

Non, il existe pas de fonction de signe standard fournie par les bibliothèques standards C ou C spécifiquement pour les types numériques.

Alternative Options de calcul du signe flottant

Bien qu'il n'y ait pas de fonction de signe dédiée, il existe des méthodes alternatives pour calculer le signe des nombres à virgule flottante. Une approche populaire utilise la fonction copysign, qui renvoie une nouvelle valeur avec la valeur absolue du nombre fourni et le signe d'un autre nombre spécifié. Par exemple, vous pouvez l'utiliser comme suit :

#include <math.h>
int sign(float val) {
  return copysign(1.0f, val);
}

Fonction de signe C de type sécurisé

Une solution plus sûre et portable consiste à définir un générique fonction de signe à l'aide de modèles :

template <typename T>
int sgn(T val) {
  return (T(0) < val) - (val < T(0));
}

Cette fonction fonctionne pour tout type pouvant être comparé à zéro et prend en charge à la fois signé et non signé types.

Avantages et mises en garde

La fonction sgn est efficace, conforme aux normes et précise. Cependant, il s'agit d'un modèle qui peut introduire des frais de compilation dans certains scénarios.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn