gpt4 book ai didi

c - 此源代码在 C 中打开一个字符串。它是如何做到的?

转载 作者:太空狗 更新时间:2023-10-29 16:14:45 25 4
gpt4 key购买 nike

我正在阅读一些模拟器代码,我反驳了一些非常奇怪的事情:

switch (reg){
case 'eax':
/* and so on*/
}

这怎么可能?我以为你只能 switch 整数类型。是否发生了一些宏观诡计?

最佳答案

(只有您可以回答“宏技巧”部分 - 除非您粘贴更多代码。但是这里没有多少宏可以使用 - 正式地,您不能重新定义关键字;这样做的行为是未定义的。)

为了实现程序的可读性,机智的开发人员正在利用实现定义的行为'eax' 不是字符串,而是一个多字符常量。非常仔细地注意 eax 周围的单引号字符。在您的情况下,它很可能会为您提供一个 int ,该字符组合是唯一的。 (通常每个字符在 32 位 int 中占据 8 位)。每个人都知道您可以在 intswitch!

最后,一个标准引用:

C99 标准说:

6.4.4.4p10: "The value of an integer character constant containing more than one character (e.g., 'ab'), or containing a character or escape sequence that does not map to a single-byte execution character, is implementation-defined."

关于c - 此源代码在 C 中打开一个字符串。它是如何做到的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45550674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com