Reputation: 1483
Recently, one of my friends encountered this question in an interview. The interviewer asked him if the special characters like $, @, |, ^, ~
have any usage in C or C++ and where.
I know that |, ^ and ~
are used as bitwise OR, XOR and complement respectively.
Do @
and $
have any special meaning? If they do, what would be an example where it could be applied?
Upvotes: 44
Views: 38578
Reputation: 1
To complete the other answers. The C99-Standard in 5.2.1.3:
Both the basic source and basic execution character sets shall have the following members:
the 26 uppercase letters of the Latin alphabet
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
the 26 lowercase letters of the Latin alphabet
a b c d e f g h i j k l m
n o p q r s t u v w x y z
the 10 decimal digits
0 1 2 3 4 5 6 7 8 9
the following 29 graphic characters
! " # % & ' ( ) * + , - . / :
; < = > ? [ \ ] ^ _ { | } ~
All other characters maybe not even exist. (And should not be used)
But there is also this point in the Common extensions: Annex J, J.5.2:
Characters other than the underscore _, letters, and digits, that are not part of the basic source character set (such as the dollar sign $, or characters in national character sets) may appear in an identifier (6.4.2).
Which is basically what duskwuff already wrote.
Upvotes: 12
Reputation: 2314
To complete the accepted answer, the @
can be used to specify the absolute address of a variable on embedded systems.
unsigned char buf[128]@0x2000;
Note this is a non-standard compiler extension.
Check out a good explanation here
Upvotes: 21
Reputation:
@
is generally invalid in C; it is not used for anything. It is used for various purposes by Objective-C, but that's a whole other kettle of fish.
$
is invalid as well, but many implementations allow it to appear in identifiers, just like a letter. (In these implementations, for instance, you could name a variable or function $$$
if you liked.) Even there, though, it doesn't have any special meaning.
Upvotes: 46