为什么我看不出来区别

老王爱上猫 2012-11-05 10:16:51

// 二者区别
while(*cp++ != '\0');
while( *cp )cp++;
...全文
132 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saingel 2012-11-06
  • 打赏
  • 举报
回复
那么费事干嘛?直接while(*cp++);
wumn29 2012-11-06
  • 打赏
  • 举报
回复
while(*cp++ != '\0');//先判断*cp != '\0', 再执行++,循环结束, cp指向'\0'的后一个字节的起始地址。 while( *cp )cp++; //循环结束cp指向'\0'的起始地址
lin5161678 2012-11-06
  • 打赏
  • 举报
回复
while(*cp++ != '\0');//退出循环的时候 cp指向字符串的\0 后面一个char
while( *cp )cp++;//退出循环的时候 cp刚刚好指向\0
Kuovane 2012-11-06
  • 打赏
  • 举报
回复
while(*cp++ != '\0');//这个可以保证执行cp++语句比循环体里的早 while( *cp )cp++; //这个不能保证哦 另外后一个语句比较长。用哪个,看习惯。
JiMoKuangXiangQu 2012-11-05
  • 打赏
  • 举报
回复
#include <stdio.h>

void main()
{
	const char *s = "string";
	const char *cp;

	cp = s;
	while (*cp++ != '\0')
		printf("%s\n", cp);

	printf("\n");
	
	cp = s;
	while (*cp)
	{
		printf("%s\n", cp);
		cp++;
	}

	return 0;
}
这种场合就有点分别了. 对你提到的语句,做的事情一样. 供参考.
healer_kx 2012-11-05
  • 打赏
  • 举报
回复
我也看不出来啊。
taodm 2012-11-05
  • 打赏
  • 举报
回复
去看反汇编。

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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