char s[ ] = "language", *p = s;
while( *p++ != 'u') {
printf("%c", *p – 'a' + 'A');
}
*p++不应该等于l吗?为什么输出没有l,而且最后为什么会输出‘U’?
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"