关于指针的相关问题和p++

char s[ ] = "language", *p = s;

while( *p++ != 'u') {
printf("%c", *p – 'a' + 'A');
}
*p++不应该等于l吗?为什么输出没有l,而且最后为什么会输出‘U’?

p指向字符串首地址,while判断p指向的字符是否为'u',如果是'u'则循环结束,然后将字符转换为大写字符
这里的一个关键问题是,while中* p++ != ‘u',是先判断 * p != 'u',然后p++,因此判断字符l!='u'后,p接着就指向了下一个字符'a',因此printf输出的是'A',当p指向字符'g'时,也不等于'u',然后p指向下一个字符'u',因此会输出'U'
最终输出的字符是"ANGU"

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632