在《求职之道》上看到了“指针在任何情况下都可进行>, <, >=, <=, = =运算”的判断题,
脑中无解,便去百度搜了下,可是发现大多数人都说这个命题是正确的,当然也有不同意见的。
意见一:
指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址,可看成整型变量。
如果仅仅是指针比较,其实就是整型变量比较,当然任何情况下都可以进行比较运算
意见二:
1.指针是地址就和一般数据一样,但地址不可以进行比较运算吧。所以应该是指针变量。
2.是在任何的情况下也应该不对,如果是类型不匹配呢。然后自己写了如下代码:
int *a = (int*)0x00007788;
char *b = (char*)0x00007789;
if(a == b) cout<<"pa == pb"<<endl;
if(a > b) cout<<"pa > pb"<<endl;
if(a < b) cout<<"pa < pb"<<endl;编译结果:
a.cpp:15:8: 错误: 在不同的指针类型‘int*’和‘char*’之间的比较需要一个类型转换 [-fpermissive]
a.cpp:16:7: 错误: 在不同的指针类型‘int*’和‘char*’之间的比较需要一个类型转换 [-fpermissive]
a.cpp:17:7: 错误: 在不同的指针类型‘int*’和‘char*’之间的比较需要一个类型转换 [-fpermissive]所以我个人觉得就这么简单的一个程序就足以说明了上面的命题是错误的。
本文探讨了关于指针是否可以在任何情况下进行比较运算的问题。通过分析两种观点并给出实验代码,证实了不同类型指针直接比较会导致编译错误,需要进行类型转换。
1121

被折叠的 条评论
为什么被折叠?



