在C或C++中,“at”符号(@)和美元符号($)是否有特殊含义?

7fyelxc5  于 2023-06-21  发布在  其他
关注(0)|答案(3)|浏览(241)

最近,我的一个朋友在采访中遇到了这个问题。面试官问他,像$, @, |, ^, ~这样的特殊字符在C或C++中是否有任何用法,以及在哪里使用。
我知道|, ^ and ~分别用作 * 按位 * OR,XOR和 * 补码 *。
@$有什么特殊含义吗?如果有,可以应用的例子是什么?

gkl3eglg

gkl3eglg1#

@在C中一般是无效的;它不用于任何东西。它被Objective-C用于各种目的,但这是另一回事。
$也是无效的,但许多实现允许它出现在标识符中,就像字母一样。(例如,在这些实现中,如果您喜欢,可以将变量或函数命名为$$$。)即使在那里,它也没有任何特殊意义。

6yt4nkrj

6yt4nkrj2#

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

unsigned char buf[128]@0x2000;

注意这是一个非标准的编译器扩展。
查看一个很好的解释here

f0ofjuux

f0ofjuux3#

完成其他答案。www.example.com中的C99标准5.2.1.3:
基本源字符集和基本执行字符集均应包含以下成员:
拉丁字母表中的26个大写字母
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
拉丁字母表中的26个小写字母
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
十位十进制数
0 1 2 3 4 5 6 7 8 9
以下29个图形字符
! " # % & ' ( ) * + , - . / :; < = > ? [ \ ] ^ _ { | } ~
其他的角色可能根本就不存在。(不得使用)
但在通用扩展中也有这一点:附录J,J.5.2:
除下划线_、字母和数字以外的不属于基本源字符集的字符(如美元符号$或国家字符集中的字符)可以出现在标识符中(6.4.2)。
这基本上是duskwuff已经写过的。

相关问题