for(; p; p++)中的p!= 0为什么只在字符串末端的\0生效,而字符串中的0他不会跳出循环,完整代码如下
#include <stdio.h>
int main(void){
char buf[512];
char exist[128]={0};
int cnt;
while(gets(buf) != NULL){
char *p = buf;
cnt = 0;
for(; *p; p++){
if(!exist[*p]){
exist[*p] = 1;
++cnt;
}
}
printf("%d\n", cnt);
}
return 0;
}
其他的0是'0',它的ascii码值是48
\0的ascii码是0,
学了这么长时间编程,'0'和0还分不清吗
p!= 0
这里是0,而不是'0'
字符串中的数字0,是‘0’,其整数值为0x30
整数的0,是绝对的0
'0'的ascii码值是48.对应十进制是48
p!= 0 中0.对应十进制是0
字符串中的数字0,是'0'
下次要看仔细哦
谢谢采纳.
p!= 0
这里是0,而不是'0'
字符串中的数字0,是‘0’,其整数值为0x30
整数的0,是绝对的0