web-dev-qa-db-fra.com

Le symbole At (@) et le signe dollar ($) ont-ils une signification particulière en C ou C ++

Récemment, un de mes amis a rencontré cette question dans une interview. L'intervieweur lui a demandé si les caractères spéciaux comme $, @, |, ^, ~ ont n'importe quelle utilisation en c ou c ++ et où.

Je le sais |, ^ and ~ sont utilisés comme OR au niveau du bit, XOR et Complément respectivement.

Mais je ne sais pas si @ and $ a une signification particulière. Si tel est le cas, pourriez-vous donner un exemple où il peut être appliqué?

26
Forever Learner

@ n'est généralement pas valide en C; il n'est utilisé pour rien. Il est utilisé à diverses fins par Objective-C, mais c'est une toute autre marmite de poisson.

$ n'est pas non plus valide, mais de nombreuses implémentations lui permettent d'apparaître dans les identificateurs, tout comme une lettre. (Dans ces implémentations, par exemple, vous pouvez nommer une variable ou une fonction $$$ si vous avez aimé.) Même là, cependant, cela n'a pas de signification particulière.

27
duskwuff

Pour compléter la réponse acceptée, le @ peut être utilisé pour spécifier l'adresse absolue d'une variable sur les systèmes embarqués.

unsigned char buf[128]@0x2000;

Notez qu'il s'agit d'une extension de compilateur non standard.

Découvrez une bonne explication ici

8
Bilow

Pour compléter les autres réponses. La norme C99 en 5.2.1.3:

Les jeux de caractères source et d'exécution de base doivent tous deux avoir les membres suivants:

les 26 lettres majuscules de l'alphabet latin

A B C D E F G H I J K L MN O P Q R S T U V W X Y Z

les 26 lettres minuscules de l'alphabet latin

a b c d e f g h i j k l mn o p q r s t u v w x y z

les 10 chiffres décimaux

0 1 2 3 4 5 6 7 8 9

les 29 caractères graphiques suivants

! " # % & ' ( ) * + , - . / :; < = > ? [ \ ] ^ _ { | } ~

Tous les autres personnages n'existent peut-être même pas. (Et ne doit pas être utilisé)

Mais il y a aussi ce point dans les extensions communes: Annexe J, J.5.2:

Les caractères autres que le trait de soulignement _, les lettres et les chiffres qui ne font pas partie du jeu de caractères source de base (tels que le signe dollar $ ou les caractères des jeux de caractères nationaux) peuvent apparaître dans un identificateur (6.4.2).

C'est essentiellement ce que Duskwuff a déjà écrit.

6