有人可以详细解释一下此代码,为什么会出现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++;
}

07-25 20:35