写了一个函数
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字节长度的
你这段内容用代码块编辑一下吧,*号看不全,不好理解啊