使用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). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |