if(s.name=="kolkata")
{
printf("the details");
}
if(strcmp((s.name,"kolkata")==0)
{
printf("the details");
}
第一个“if”情况没有语法错误,但仍然不起作用,而第二个“if”情况却工作得非常有效,为什么?
这与第一个案例不同不起作用无论如何,它只是以一种方式工作不打算.
根据代码,
if(s.name=="kolkata")
是尝试比较指针本身。它不会通过这些指针来比较内存位置指针的内容。
来到你所期待的地方语法错误,引用C11
,第 6.5.9 章,等式运算符的约束,(==
)
- 两个操作数都是指向兼容类型的限定或非限定版本的指针;
So,
if(s.name=="kolkata")
从语法的角度来看,是一个完全有效且合法的 C 代码。从逻辑上讲,当您期望通过指针来比较内存区域指针的内容时,这段代码是无用的并且没有意义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)