c++ - 带有字符串/八进制的 int lambda 表达式? (C++)

标签 c++ string octal

我接受了开卷测试,并被告知我可以使用我需要的任何资源来回答问题,因为它更像是一种能力倾向测试 - 有一个问题让我真的很困惑。

这个问题要求编写一个与给定的函数类似的函数——我相信我能做到——但我找不到太多关于该函数正在做什么的信息,并且给定一个小样本很难确定它是什么正在发生。

题目如下:

程序打印什么?请编写等效的 getValue 函数。

int t[]={1,2,3};
int getValue(int i)
{
  return "\5\3\8"[t[i]];    
}
void main()
{
  printf("%d",getValue(2));    
}

程序打印“0”,这是比较简单的部分。我很想用一个只返回那个的简单方法来回答。但我想更深入地了解 getValue 函数中究竟发生了什么。我的主要好奇心是字符串部分在 lambda 表达式方面做了什么,因为\8 不是有效的八进制但似乎对结果值有一些影响。

不是在寻找直接的答案(根据我的收集,这就是我使用作业标签的原因),只是朝着正确的方向插入

感谢帮助

最佳答案

转义码不是八进制的,我相信它们是十进制的。无论如何,只要它们只占用一个字节,它们就无关紧要。

跟踪这个的执行是微不足道的。首先,我们考虑参数的替换

int t[]={1,2,3};
int getValue()
{
  return "\5\3\8"[t[2]];    
}
int main() //int, not void
{
  printf("%d",getValue());    
}

t 的第三个值是 3,它产生字符串中的第四个 字符。由于字符串文字是三个字符,加上 NULL 终止符,那么第四个字符就是 NULL 终止符。当转换为整数时,该值为零。 printf 调用正确地打印了这个整数。例如,类似的函数将直接索引到字符串中。

关于c++ - 带有字符串/八进制的 int lambda 表达式? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11605217/

相关文章:

c++ - 如何从此源代码中删除所有空格字符

c++ - 在 C++ 模板特化中添加基类

java - 为什么 String[] args 没有像其他字符串数组一样进行初始化?

java转换二进制/本地/十六进制 double 值

c++ - GrabCut 算法中发生了什么

c++ - 以数组为参数的模板特化

c++ - 将包含十六进制值的字符串转换为c中的字符字节

c++ - 使用 scanf 在 C++ 中读取字符串

Python:无效的 token

ruby - 无效的八进制数字错误