B.J*_*.A. 1 c++ arrays cuda char
我需要 cuda 中的一个函数来接收一个字符数组,如果它们匹配,该函数将返回一个值,但是当我测试此代码时,总是返回 0,就像这些条件都不匹配一样。到目前为止我尝试过这个:
__device__ float operate_1(float num, char func[]) {
if(func[0] == 's' && func[1] == 'i' && func[2] == 'n' )
return sinf(num * PI/180.0);
else if(func[0] == 'c' && func[1] == 'o' && func[2] == 's' )
return cosf(num * PI/180.0);
else if(func[0] == 'l' && func[1] == 'o' && func[2] == 'g' )
return logf(num);
else if(func[0] == 'e')
return expf (num);
return 0; }
//evaluates an operator.
Run Code Online (Sandbox Code Playgroud)
这段代码也是如此,但不像前一个那样工作。
__device__ float operate_1(float num, char func[]) {
if(func == "sin")
return sinf(num * PI/180.0);
else if(func == "cos")
return cosf(num * PI/180.0);
else if(func == "log")
return logf(num);
else if(func == "e")
return expf (num);
return -0; }
//evaluates an operator.
Run Code Online (Sandbox Code Playgroud)
我能做什么?
这个怎么样:
__device__ int my_strcmp(const char *str_a, const char *str_b, unsigned len = 256){
int match = 0;
unsigned i = 0;
unsigned done = 0;
while ((i < len) && (match == 0) && !done){
if ((str_a[i] == 0) || (str_b[i] == 0)) done = 1;
else if (str_a[i] != str_b[i]){
match = i+1;
if (((int)str_a[i] - (int)str_b[i]) < 0) match = 0 - (i + 1);}
i++;}
return match;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3046 次 |
| 最近记录: |