
if("foo" == "foo"){ printf("The C-style comparison worked.\n");}if("foo" == "bob"){ printf("The C-style comparison produced the incorrect answer.\n");} else { printf("The C-style comparison worked,strings were not equal.\n");} 但我在使用GCC和VS 2015的两个Codeblock中测试了它,编译为C和C.两者都允许代码并产生正确的输出.
比较C风格的字符串是否合法?或者它是否是允许此代码工作的非标准编译器扩展?
如果这是合法的,那么为什么人们在C中使用strcmp()?
解决方法 编译器可以自由地使用字符串实习,即通过避免复制相同的数据来节省内存.比较相等的2“foo”文字必须存储在您的案例中的相同内存位置.但是,您不应该将此作为规则. strcmp方法可以在所有情况下工作,而实现定义是否您的观察将与另一个编译器,编译器版本,编译标志集等保持一致.
总结以上是内存溢出为你收集整理的c – 为什么在C风格的字符串上使用==有效?全部内容,希望文章能够帮你解决c – 为什么在C风格的字符串上使用==有效?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)