rshift = ((J[i]-1)*((2*net)-J[i]) >> -1);
L[i] = rshift + K[i]-J[i];
当我编译它时,我得到“错误:表达式必须具有对应于第一行的积分或枚举类型”。除了'我'都有双精度。
它既不左右也不右移。我正在使用fedora 12,我有nvcc 3.2,V0.2.1221。对于c ++(g ++编译器),它可以很好地工作。
但当我尝试
时rshift = ((J[i]-1)*((2*net)-J[i]) >>= -1);
L[i] = rshift + K[i]-J[i];
它是“错误:表达式必须是可修改的左值”我尝试了很多但无法解决它。任何想法?
答案 0 :(得分:1)
回答这个问题 - 在CUDA C中没有浮点类型的位移(C也不是C ++)。通过评论中发布的问题,似乎混淆的来源是翻译一些传统Fortran代码的错误尝试,其中也没有浮点位移支持。