我一直在尝试解决 K&R 问题 7-8 的解决方案,直到我在这个站点上找到了这个解决方案(带有原始问题) 。我无法评论答案(可能是由于它的年龄);我实际上可以对该问题提出意见的唯一方法是发布答案,我认为这是不合适的。因此,我决定根据所选的“答案”创建这个高度相关的问题,这对我来说似乎是合乎逻辑的,直到我到了这一点(关于将函数实现为宏):
“经常重复这一点,因为位掩码具有固定大小,因此‘节省空间’迅速成为成本。”
唯一的问题是函数调用也需要时间。“跳转”到函数位置,为局部变量留出存储空间,然后实际计算比较,都需要时间。
那么究竟是如何实现一个宏来测试字符的 ASCII 值比第一个包含表查找的函数慢(考虑到这一点)?
一个函数调用怎么可能比比较两个整数花费更少的时间,其中一个整数已经在内存中,其中一个是常量?在我看来,随着时间的推移,重复调用函数和宏仍然会导致宏更快。
难道我的思维方式不对?我认为它必须是因为它没有在原始问题中提出。
如果有人能对此有所了解,我会很高兴。