在 CUDA 中使用内部类型转换的奇怪错误
Odd error using intrinsic typecasting in CUDA
我无法弄清楚以下代码之间的区别是什么:
int t = __double2int_rd(pos.x/params.cellSize.x*2.0)&1;
if( t ==0) {...}
和
if(__double2int_rd(pos.x/params.cellSize.x*2.0)&1 == 0) {...}
第二个选项永远不会返回 true,而第一个选项的行为符合预期。
有人有什么想法吗?
第二个表达式首先计算结果始终为 false 的(1==0)
。然后用函数的结果ANDs
它 __double2int_rd
.
因此,它实际上评估:
if(__double2int_rd(pos.x/params.cellSize.x*2.0) & 0)
这永远是错误的。
第一个表达式的等效项为:
if((__double2int_rd(pos.x/params.cellSize.x*2.0) & 1) == 0)
注意括号。如果您不确定表达式的计算顺序,添加括号是一种很好的编程习惯。
相关文章:
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- C++:用户定义的显式类型转换函数错误
- LINUX 操作系统上的错误:令牌之前预期的构造函数、析构函数或类型转换'('?
- 指向类成员函数的指针中存在类型转换错误
- 错误 c++ 在令牌之前'('预期的构造函数、析构函数或类型转换
- 错误:在“(”标记之前进行预期的构造函数、析构函数或类型转换.即使我有一个构造函数
- Mat的convertTo函数在OpenCV中将灰度图像的类型转换为CV_32F时抱怨断言错误
- 获取错误:在“(”标记之前进行预期的构造函数、析构函数或类型转换
- Vulkan API 调试函数指针类型转换错误
- 模板扣除 /类型转换错误
- 为什么缩小转换范围不能防止错误类型的map.insert()失败
- 错误:令牌之前的预期构造函数、析构函数或类型转换'*'
- 尝试生成C++ .DLL的视觉对象类型/转换错误
- 在 CUDA 中使用内部类型转换的奇怪错误
- 需要构造函数/析构函数/类型转换错误
- C++模板错误:'<'令牌之前的预期构造函数、析构函数或类型转换
- 迭代器错误从非标量类型转换为非标量类型
- C++类型转换错误
- 为什么数据类型转换错误只出现在C++中而不出现在C中
- 无法将类型转换为类型*-C++编译错误