if(s.name=="kolkata")
{
printf("the details");
}
if(strcmp((s.name,"kolkata")==0)
{
printf("the details");
}
第一个' if' case没有语法错误仍然没有工作,而第二个' if'案件确实非常有效,为什么?
答案 0 :(得分:6)
它不像第一种情况根本不起作用,它的工作方式是 无意
根据代码,
int num = 1732;
int roundedNum = Math.round((num + 9)/10 * 10);
是尝试比较指针本身。它不会通过这些指针比较内存位置指针的内容。
到了你期待语法错误,引用 if(s.name=="kolkata")
,第6.5.9章,等式运算符的约束,(C11
)
- 两个操作数都指向兼容类型的限定或非限定版本的指针;
所以,
==
从语法的角度来看,是一个完全有效且合法的C代码。从逻辑上讲,当你期望通过指针比较内存区域指针的内容时,这段代码是无用的,毫无意义。