两个字符串相减后~~~

Love1_jie 2012-04-02 07:09:06
有如下代码:

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

输出:-7

为什么s1和s2进行-运算后就成整型了???
另有代码

#include <stdio.h>
int main()
{
char *s1 = "hello world";
int t = int(strchr(s1, ' ') - s1);
printf("%d\n", t);
return 0;
}

输出: 5


这个-是如何进行运算的呀??
...全文
896 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Love1_jie 2012-04-02
  • 打赏
  • 举报
回复
了解学习了,谢谢!!
iamnobody 2012-04-02
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

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

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

还是打错了..
如果有 int *p1 = p2 + 3; 那么 : p1 - p2 就等于 3 ;
iamnobody 2012-04-02
  • 打赏
  • 举报
回复
还有,对于不是指向同一个数组的两个指针相减,行为是未定义的.也就是说结果是没有意义的.
RabbitLBJ 2012-04-02
  • 打赏
  • 举报
回复
指针相减,当然是一个整数
iamnobody 2012-04-02
  • 打赏
  • 举报
回复
对指向数组的元素的指针相减,得到的是两个指针指向的元素的距离.

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

hen_hao_ji 2012-04-02
  • 打赏
  • 举报
回复
地址 相减。

70,023

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧