混淆C++ 翻译:float&,两个 for 循环
obfuscated C++ Translation: float&, two for loops
我正在阅读Hacker News,这篇文章出现了。它包含一个光线追踪器,代码写在名片的背面。我认为将c ++转换为python将是一个很好的学术挑战,但是我坚持了一些概念。
首先,出现此函数: i T(v o,v d,f& t,v& n){...}
哪个翻译成int Tracer(vector o, vector d, float& t, vector& n){...}
float&
是什么意思?我知道在其他地方&
被用作==
这里的情况是这样吗?你能在 c++ 中做到这一点吗?
其次,我注意到这三行:
for(i k=19;k--;) //For each columns of objects
for(i j=9;j--;) //For each line on that columns
if(G[j]&1<<k){
我知道<<
是位移,我认为&
是==
。for 循环是否就像另一个循环中的一个 for 循环?
最后,这一行:v p(13,13,13);
我不太确定它的作用。它是否创建了一个由 p 标记的类,该类扩展 v(向量(,默认值为 13,13,13?
这些可能是愚蠢的问题,但我想看看我是否能理解这一点,我的搜索没有找到任何东西。提前谢谢你!
float&
是什么意思?
在这里,&
的意思是"引用",因此参数是通过引用传递的。
我知道在其他地方
&
被用作==
这里的情况是这样吗?
&
在各种语境中意味着各种事物,但它从来不意味着==
。在这种情况下,它也不是运算符;它是类型规范的一部分,这意味着它是引用类型。
我知道<<是位移,我认为
&
是==
不,它是按位和运算符。结果设置了位,其中在两个操作数中都设置了一个位。在这里,以 1<<k
为一个操作数,结果是第 k位G[j]
;因此,这将测试是否设置了该位。
for 循环是否就像另一个循环中的一个 for 循环?
是的。如果你不在 for 循环的主体周围使用大括号,那么主体就是一个语句。所以在这种情况下,第一个循环的主体是第二个循环。为了明确这一点,我建议缩进循环的主体,并使用大括号,无论它们是否绝对必要。但是,当然,我不会(故意(编写混淆代码。
最后,这一行:
v p(13,13,13);
v
是一个构造函数接受三个参数的类。这声明了一个名为 p
的变量,类型为 v
,使用该构造函数初始化;即三个坐标初始化为13
。
当你看到Vector& n
它引用传递到函数中的向量时。这意味着您可以在此函数中更改n
,而无需将其复制到另一个 Vector 或无需返回 Vector。前面的答案应该对您有所帮助。
- 如何在C++中从两个单独的for循环中添加两个数组
- 如何在for循环中包含两个索引值的测试条件
- 我可以创建一个包含两个变量的 for 循环,但时间复杂度仍然为 O(n) 吗?
- C++声明双链表,使用两个 for 循环双向遍历列表并打印
- 是否可以在 for 循环中添加两个浮点数?
- 在 for 循环中更新两个变量时遇到问题C++
- 使用两个 for 循环生成以下星号
- 比较嵌套 for 循环中的两个 wchar 数组?
- 在 C++ 中使用 OpenMP 并行化两个 for 循环不会提供更好的性能
- 同一范围内矢量的两个独立"for"循环,仅打印第一个循环
- 为什么 for 循环不能定义两个作用域的变量?
- 有没有办法在不使用两个 for 循环的情况下迭代两个容器
- 这两个 for 循环在 C 中有什么区别
- 如何使用两个 for 循环执行唯一的洗牌
- 什么是 grey.cols-1 和 grey.row -1,有两个 for 循环
- C++压缩两个for循环以提高效率
- 擦除两个 for 循环内的矢量元素
- 混淆C++ 翻译:float&,两个 for 循环
- 如何在C++中为矢量数据结构中的二维数组获取用户输入,而不使用行和列上的两个for循环
- c++中一行有两个for循环