C++还蛮有趣的嘛!

来源:百度知道 编辑:UC知道 时间:2024/05/14 14:48:29
#include<iostream.h>

int main()
{
cout<<int("我聪明">"电脑聪明")<<endl;

return 0;
};

它返回的是1,也就是真。
如果把>换成<,它返回0。

电脑是根据什么去判断的!?
但是比较成功了啊! 谁能解释一下嘛!

这里比较的并不是什么字符串的大小和长度

而是比较两个地址的大小

cout<<int("我聪明">"电脑聪明")<<endl;

执行这个以后,会在常量区分配2段空间来分别存这两个字符串常量

因为在C++下的分配是这样的,先在高地址分配,再在低地址分配

比如说:

int main()

{
int a,int b;

printf("%x,%x",&a,&b);
}

结果为:12ff5c,12ff58 <a的地址值大于b的地址值>

在联系到你这个上面就很好理解吧!

如果这个题目到TC下运行,结果就会为0

因为TC的分配方式是从低到高的,先分配的为低地址,后分配的为高地址

注意,全局的和静态的并不是这样的,应该是在栈上分配的满足,先在栈顶分配

a的空间,再分配b的空间,如果是这样的话,那么栈底到栈顶的地址空间是从

大到小的,其实这个也比较符合平常的思路.

打个比方说栈的大小为1M

那么从1M为首地址开始分配起,分配到地址为0,那么栈就满了!

第一个问题:字符串对比用strcmp
第二个问题:是一个一个字母进行比较的,ASCII

当我没说..

归根到底电脑只认识二进制数,就是通过汉字的编码进行比较的

#include <iostream>
using namespace std;

int main()
{
cout<<int("我聪明">"电脑聪明")<<endl;
cout<<int("电脑聪明吧">&quo