首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-04-14 
两个字符串相减后~~~有如下代码:C/C++ code#include stdio.hint main(){char *s1 hellocahr *s2

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

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所指向的数组的范围.

热点排行