if( (*ptr != ',') || strlen(ptr+1) < sizeof(struct A) * num1)
{
printf("\n Condition satisfied.");
}
这是有问题的代码。我有一个格式为 str = "-1,ABCDEFGH" 的字符串和一个大小为 15 字节的结构 A。
我正在预先执行此操作:
number = strtoul(str, &ptr, 10);
此操作后,ptr 指向 ',' 和 number = -1
查看 IF 条件,第一个语句的计算结果为假(因为 *ptr = ','),第二个语句执行为 TRUE,即使它应该为假( strlen(ptr+1) 为正,并且 (sizeof( struct A) * number) 是负数,仅仅是因为 num1 是负值)。
为什么此语句评估为真并进入 IF 块?我得到了输出“条件满足”,而我不应该。提前致谢。