【发布时间】:2017-01-24 10:42:10
【问题描述】:
我有以下代码:
int some_array[256] = { ... };
int do_stuff(const char* str)
{
int index = *str;
return some_array[index];
}
显然,上面的代码在某些平台上会导致错误,因为 *str 实际上可以为负数。
于是我想到了两种可能的解决方案:
将值转换为赋值 (
unsigned int index = (unsigned char)*str;)。改为传递
const unsigned char*。
编辑:这个问题的其余部分没有得到处理,所以我把它移到了一个新线程。
【问题讨论】:
-
为什么将索引作为字符串传递?你想达到什么目的?
-
真的吗?为什么要将
char *传递给函数,并将其指向的内容用作静态数组的索引? -
".. *str 实际上可以是负数" 不应该是一个错误。如果调用代码没有正确处理它,那么bug就在那里,不在这个sn-p中。
-
@Raw N - 即使是稍微不错的技术也会有所改进。
-
@qrdl:字符串操作的查找表是一种非常重要的实现技术。