大柴胡汤原文用量:C++字符串比较问题!

来源:百度文库 编辑:高校问答 时间:2024/04/29 09:07:46
钱能C++教程(第一版)上有这样一个例题:
#include <iostream.h>
void main()
{
if("join"="join")
cout<<"equal\n";
else
cout<<"not equal\n";
}
书上说运行结果是:not equal.
面我运行的结果却是:equal.
请高手指点为什么会这样,到底哪个结果对.
运行环境:VC++6.0
1.不好意思.打错字了,应该是"=="
2.哪里少了个空格

这个结果应该是根据编译器而不同的.
首先该明白的是对两个串用==来比较, 比的不是串的内容, 而是串的地址.

在这个程序里, 两个"JOIN"都是以常量的形式出现的, 有一些编译器, 对这两个常量分别分配了不同的内存, 保存相同的字串内容. 两个串的内容相同, 但是地址不同, 这样的编译器编译的程序会返回假.

而另一些编译器为了优化存使用, 把这两个相同的常量做为同一个常量, 程序里的两次引用都指向同一个内存串, 比较地址的结果自然是真.

顺便说一句, 老一辈计算机教育家, 如谭浩强他们, 最喜欢用这种怪异而无用, 反而给自己找麻烦的方式出考题. 我觉得这都是奇技淫巧, 不值得学习.

if("join"=="jion")

==

"我觉得这都是奇技淫巧, 不值得学习"
HAL9000PLUS 说的很对!

莫非你少了一个空格?