符号(@)和美元符号($)在C或C ++中是否有任何特殊含义

时间:2014-06-09 05:49:49

标签: c++ c special-characters

最近我的一位朋友在接受采访时遇到了这个问题。面试官问他,像$, @, |, ^, ~这样的特殊字符是否在c或c ++中有任何用法。

我知道|, ^ and ~分别用作按位OR,XOR和补码。

但我不知道@ and $是否有任何特殊含义。如果确实如此,请举例说明可以应用的地方吗?

3 个答案:

答案 0 :(得分:26)

@在C中通常无效;它不用于任何东西。它被Objective-C用于各种目的,但它是另一个鱼的水壶。

$也是无效的,但许多实现允许它出现在标识符中,就像字母一样。 (例如,在这些实现中,如果您愿意,可以命名变量或函数$$$。)即使在那里,它也没有任何特殊含义。

答案 1 :(得分:8)

要完成接受的答案,@可用于指定嵌入式系统上变量的绝对地址。

unsigned char buf[128]@0x2000;

请注意,这是一个非标准的编译器扩展。

查看一个很好的解释here

答案 2 :(得分:6)

完成其他答案。 5.2.1.3中的C99标准:

  

基本源和基本执行字符集都应具有   以下成员:

     

拉丁字母的26个大写字母

     

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

     

拉丁字母的26个小写字母

     

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

     

10位小数

     

0 1 2 3 4 5 6 7 8 9

     

以下29个图形字符

     

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

所有其他角色甚至可能都不存在。 (不应该使用)

但共同扩展中也有这一点:附件J,J.5.2:

  

下划线_,字母和数字以外的字符,它们不是基本字母的一部分   源字符集(例如美元符号$或国家字符集中的字符)   可能出现在标识符(6.4.2)中。

这基本上就是duskwuff已写的内容。