A symbol, standing for "at". Has always been part of both QWERTY and ASCII, but was virtually unused until the 1990s.
@ is used, primarily, as the divider between user and provider in most Internet technologies-- for example, mcc@drowned.cx would refer to the user mcc on the machine drowned.cx. This would assumedly refer to an e-mail user, but the same notation would apply for finger, ftp, http, etc.

As the internet first became widely used, @ became truly infamous; as the idiosyncratic marker of an e-mail address, @ was the most visible symbol of the Brave New Connected World. As such @ became commonly used in rather inappropriate places, at times seeming almost to be a synonym for "e", only even less dignified. Any product or service, so the marketing logic went, could immediately look internet-ish and get a stamp of legitimacy if you could somehow connect it to an "@". And so we get SETI@home, Excite@home/@home cable, the "@mark" (a name which Pippin, apple's disastrous attempt at creating a console gaming platform, was christened with just before it died), ad infinitum ad nauseum. No one is quite sure if these products are more end-user-friendly because of these names; what is certain, though, is because @ is an illegal character in domain names (for obvious reasons) and most search engines do not recognize the @ symbol, products with @s in their name are much much more difficult to look up on the internet. (Interestingly, the allegedly internet-friendly C# has the same problem.)


Perl uses @ to mark any value or variable with the type of list. See Perl 5 Pocket Reference: Data Types.
In text listings of users in IRC channels-- for example the results of a /whois-- it is customary to prefix the names of channel operators with the @ symbol. As a nod to this convention, users on everything2 with gods status have their names suffixed with an @ in the other users nodelet.
@ has also been adopted by Objective C as its dedicated operator for Objective-C-specific language/compiler operations, on the logic that (besides ` and $) @ is the only symbol in ASCII that ANSI C does not use for anything. A complete list of all @ directives follows:
  • Alone, @ is the Objective C stringize operator. Followed by any string, @ creates a static NSString object and returns it. Like, @"Example" anywhere in code would be equivalent to a pointer to an NSString containing "Example". @"" NSStrings are initialized at runtime and sit there in memory waiting to be used, exactly the same way as ordinary static "" strings.
    @"" is pure syntactic sugar, but you must admit it is some lovely syntactic sugar.
  • @interface : see the Objective C node for normal usage, protocol and category
  • @implementation : see the Objective C node
  • @protocol : see protocol
  • @end marks the end of an @interface, @implementation or @protocol definition.
  • @public, @private and @protected are used to set the scope of class instance variables to be either public, private, or protected. Instance variables are protected by default, but if you use any of these three directives in an @interface specification then all interface variables after that will be given the specified scope up until the next instance of @public, @private, @protected or @end.
  • @class class-name can be placed at the top of a .h file to alert the compiler that class-name is a valid class which is defined in another file. It's exactly like extern.
  • @selector : see selector.
  • @encode : Every single class, structure, or other type in objective c has an associated character string in a special code that Objective C uses to describe types and groups of types. You can get a copy of the associated string by saying @encode( class_or_struct_or_type ) Perhaps someone should write the specifics of this up under Objective C Type Encoding. See see p. 124 of the Objective C book.
  • @defs : This one's kind of odd, and what it does is take the name of a class and return a structure definition list. This can be used for one thing: to create a struct with the same internal data structure as a class. (Remember: While Objective C objects are implemented as structs, you can not treat the two interchangeably.) Let's say you had a class named AData. You could say
     struct ADataLikeStruct {
        @defs( AData );
    }
    And you will have defined a struct named ADataLikeStruct with the same data structure as AData. Once you've done this, if you have a pointer to an instance of class AData named myData, and you want to extract the member variable internalData, you can say ( (ADataLikeStruct *) myData )->internalData and it will pull internalData out of memory for you. (You could, of course, do the whole thing with much less trouble by saying [myData internalData], of course..

    Pretty much the only two usages of this are if you want to pass an Objective C object to a C function masquerading as a struct, or if you want to somehow break inside of an object to access a private variable. In ANY case, usage of @defs is frowned upon.


r4v5 says also, @ is the symbol for a human in nethack..
The ASCII value of @ is 64. If you want to search for or hard-link to this node, you must refer to it as "@" rather than just @-- everything2 does not support searching for or linking to the @ symbol.