我想知道在编译/预处理期间是否可以将已知字符串转换为int。
想象一下,我有一个带字符串的字符串' AB'我想把它变成一个像工会一样的int:
union StrInt
{
int i;
char c[2];
}
c[ ] = 'AB'
将使我的值为16961
我想在编译/预处理期间做同样的事情
答案 0 :(得分:1)
是。 在我的架构上(x86_64-pc-linux-gnu ),这个:
union {
int i;
char c[2];
} u = { .c="AB" };
int main()
{
printf("%d\n", u.i);
}
按照您的预期打印16961。 (不同的实现可能会给你不同的输出。)
通常可以使用字符串文字初始化字符数组。
{ .c= { 'A', 'B' } }
将是c
成员初始化的另一种方式。