读书人

两个字符串相减后~解决办法

发布时间: 2012-04-14 17:14:21 作者: rapoo

两个字符串相减后~~~
有如下代码:

C/C++ code
#include <stdio.h>int main(){    char *s1 = "hello";    cahr *s2 = "world";    printf("%d\n", s1-s2);    return 0;}

输出:-7

为什么s1和s2进行-运算后就成整型了???
另有代码
C/C++ code
#include <stdio.h>int main(){    char *s1 = "hello world";    int t = int(strchr(s1, ' ') - s1);    printf("%d\n", t);    return 0;}

输出: 5


这个-是如何进行运算的呀??

[解决办法]
指针相减,当然是一个整数
[解决办法]
还有,对于不是指向同一个数组的两个指针相减,行为是未定义的.也就是说结果是没有意义的.
[解决办法]
探讨

对指向数组的元素的指针相减,得到的是两个指针指向的元素的距离.

如果有 int *p1 = p2 + 3; 那么 : p1 - p3 就等于 3 ;当然,前提是运算结果没有超出p1,p2所指向的数组的范围.

读书人网 >C语言

热点推荐