一心热爱编程 2022-03-26 17:27 采纳率: 100%
浏览 62
已结题

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

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

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

  • 写回答

2条回答 默认 最新

  • CSDN专家-link 2022-03-26 17:32
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月3日
  • 已采纳回答 3月26日
  • 创建了问题 3月26日