unsigned int 和 unsigned char的问题

写了一个函数

send_cmd(unsigned char *cmd,unsigned char *ack)

中间有一句

if(((unsigned int)cmd <= 0xFF)

那如果我想使用

send_cmd((unsigned char *"A+B",(unsigned char *)ack)

那么这个里面是执行if中的语句,还是else的语句;
问题:
1.判断if的条件中实际是

(unsigned int)"A+B"
还是(unsigned int)(unsigned char*)"A+B"
还是(unsigned int)(unsigned char)"A+B"

2.
对(unsigned int)(unsigned char*)"A+B"判断时,为什么为报警告 ?
c: 7:8:警告:从“char*”[-Wpointer to int cast]转换为较小的整数类型“unsigned int”
3.可以帮忙解释一下嘛?

if(((unsigned int)cmd <= 0xFF)这一句是把unsigned char *cmd这个的指针地址拿过来判断了,send_cmd((unsigned char )"A+B",unsigned char ack)这个里面传进来到if(((unsigned int)cmd <= 0xFF)也是要看"A+B"的地址是多少来判断进入后面if还是else

若在 64 位系统下,将指针强制转换成 unsigned int 类型会报你的那个警告,因为64位下指针是8字节长度的

你这段内容用代码块编辑一下吧,*号看不全,不好理解啊