加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用isxdigit()时如何处理C中的数组下标警告?

发布时间:2020-12-16 10:24:39 所属栏目:百科 来源:网络整理
导读:参见英文答案 array subscript has type ‘char’????????????????????????????????????4个 我在C中有以下代码: char input[127] = "hello world";isxdigit(input[0]); 但是我收到了以下警告: warning: array subscript has type 'char' 是什么原因以及如
参见英文答案 > array subscript has type ‘char’????????????????????????????????????4个
我在C中有以下代码:

char input[127] = "hello world";

isxdigit(input[0]);

但是我收到了以下警告:

warning: array subscript has type 'char'

是什么原因以及如何解决?

解决方法

原因是在您的C实现中,isxdigit()使用数组查找实现为宏.

只要您的输入字符串只包含字符< = 127,您就可以使用强制转换修复它:

isxdigit ((int)input[0]);

或者,如果你认为演员是丑陋的,借助于良性表达,例如加0:

isxdigit (0 + input[0]);  /* Avoid cast by using an int-typed expression. */
isxdigit (+input[0]);     /* Same thing using unary plus instead of addition. */

由于C标准要求isxdigit也是一个函数,你也可以调用函数而不是宏:

(isxdigit)(input[0]);

甚至

#undef isxdigit
isxdigit(input[0]);

这应该不会产生警告,因为input [0]被提升为int(假设先前是#include< ctype.h>.)

正如cmaster正确指出的那样,一旦你的char签名并包含负值,这些解决方案就会崩溃.在这种情况下,您必须首先转换为unsigned char(如果需要,则转换为int).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读