有人可以详细解释一下此代码,为什么会出现0?
源代码:
#include<stdio.h>
void main(){
char *str="Hello";
char *ptr = str;
char least =127;
while (*ptr++)
least = ((*ptr)<(least))?(*ptr):(least);
printf("%d", least);
}
输出:
0
最佳答案
您似乎正在尝试查找字符串中的最小ASCII值。
您的代码的问题在于,while()
循环会忽略字符串的第一个字节,而是查看'\0'
字符串结尾标记。您要做的是在将least
与零进行比较之前退出循环。
尝试以下方法:
while (*ptr) {
least = ((*ptr)<(least))?(*ptr):(least);
ptr++;
}