c - 将枚举存储在有符号字符中并在 C 中与枚举进行比较失败
问题描述
我正在尝试读取枚举并将其存储在签名字符中。后来我试图将存储的值与实际的枚举进行比较,但它失败了。请让我知道是否有人有线索。
typedef enum {
test1,
test2,
test3,
}Testenum;
在 Main 我有下面的代码
signed char test;
int ret = sscanf(argv[2], "%c", &test);
printf("%c", test);
if ((ret ==1) && (test <= test3))
printf("Success");
else
printf("failure");
我输入了“xxx xxx 1”,第一次打印打印“1”,然后是“失败”。我验证了 ret 是 1,所以第二个条件失败了。
解决方案
您正在将字符值'1'
与数字进行比较3
,它大于 3。要将数字 1
与数字进行比较3
,您需要将字符转换'1'
为数字1
。您可以通过'0'
从字符中减去来做到这一点(假设字符是数字,因为字符'0'
在'9'
字符集中具有连续的数值)。例如:
if (test >= '0' && test <= '9') {
int v = test - '0';
if (v <= test3)
printf("Success\n");
else
printf("Failure\n");
}
推荐阅读
- r - 将混合数据类型的新点分配给现有 PAM 生成的集群
- php - MySQL 结果成数组
- gcc - 如何查看 gcc 优化选项?
- delphi - Marks.Item[nPoint].Visible 之后的 TeeChart CalcClickedPart 错误:=false
- angular - 我可以从 `canActivate: AuthGuard` 中读取路由参数的值吗?
- r - 从不同的 html 文件创建唯一文件名时出现问题
- ios - 动画文本字段像 Messenger 和 Whatsapp 一样扩展
- python - 如何从Python中的字符串中获取两个特定字符之间的一段字符串
- python - django 查询没有正确分组
- c++ - 有必要使用std::move吗?这不是已经是右值引用了吗?