【发布时间】:2015-10-09 19:21:39
【问题描述】:
API 提供了一个函数signed char getDirection();,返回 1 表示“前进”,0 表示“静止”,-1 表示“后退”。
当然,正如these questions 中所解释的,一个简单的比较:
if(getDirection() == -1) { ... }
失败。好的,我明白为什么它失败了。但我就是找不到如何让它工作!我尝试将左侧投射到(int),将右侧投射到(signed char),仍然没有问题......
编辑:
signed char a = getDirection();
printf("%d\n",(int) a);
printf("%d\n",(int) getDirection());
结果:
-1
255
edit2:每个请求:
const signed char getDirection(uchar d)
{
if(d >= config.directional_inputs.channelCount) return -2;
return shm->input_state.directional_inputs[d].direction;
}
【问题讨论】:
-
@AlexD:我希望。好吧,实际上测试语句的格式是
printf("val: %d, comparison: %d", getDirection(), (getDirection() == DIRECTION_BACK) );,其中常量是#define DIRECTION_BACK -1 -
您的代码是正确的。检查
getDirection()是否实际返回-1。显示您的printf的输出。也显示你的实际代码,也许只有一个流浪的';'某处。 -
@MichaelWalz:输出:“val:-1,比较:0”。一位同事怀疑编译器错误。
-
@SF 你用的是什么编译器?确实很奇怪。
-
嗯,你不是忘了在你的编译单元中包含一个 .h 或明确声明
const signed char getDirection(uchar d);吗?
标签: c type-conversion