整数

2014-09-12 16 views
0

比较CHAR编译如下整数

char *token; 
... 
if(token == 'x') 
{ 
    ... 
} 

我得到的错误是,当我得到一个错误。这是如何工作的,我该如何解决它?

+1

通过取消引用指针'if(* token =='x')' – Coconop 2014-09-12 13:13:31

+0

请注意,编译器引用的整数是''x''。字符文字(用单引号括起来)的类型为“int”。 – pmg 2014-09-12 13:32:45

回答

2

问题是token不是char,它是指向char的指针。改变这种

if(token == 'x') 

if(*token == 'x') 
1

在C整数字符常量具有类型int

(C标准,6.4.4.4字符常数)

10的整数字符常数具有int类型。

因此,在这个表达式

token == 'x' 

指针令牌定义为

char *token; 

整数恒定的 'x' 相比较。编译器不知道如何比较它们并发出错误。

我想你想比较的对象指针指向标记与整型常量,它是

if(*token == 'x') 

考虑到该令牌将被分配一个有效的地址帐户。