如果没有语法错误

时间:2016-04-19 11:34:19

标签: c string strcmp equality-operator

if(s.name=="kolkata")      
{
    printf("the details");
}
if(strcmp((s.name,"kolkata")==0) 
{
    printf("the details");
}

第一个' if' case没有语法错误仍然没有工作,而第二个' if'案件确实非常有效,为什么?

1 个答案:

答案 0 :(得分:6)

它不像第一种情况根本不起作用,它的工作方式是 无意

根据代码,

int num = 1732;
int roundedNum = Math.round((num + 9)/10 * 10);

是尝试比较指针本身。它不会通过这些指针比较内存位置指针的内容。

到了你期待语法错误,引用 if(s.name=="kolkata") ,第6.5.9章,等式运算符的约束,(C11

  
      
  • 两个操作数都指向兼容类型的限定或非限定版本的指针;
  •   

所以,

==
从语法的角度来看,

是一个完全有效且合法的C代码。从逻辑上讲,当你期望通过指针比较内存区域指针的内容时,这段代码是无用的,毫无意义。