你说的第一个 *p++ 输出的是字符 '1',为什么结果是321,第一个不就是3了吗,你解释解释
时间: 2024-03-19 22:40:53 浏览: 15
非常抱歉,我之前的回答仍然有误。正确的解释是:在 printf 函数中,使用了三个 *p++,这表示先输出当前指针所指向的字符,再将指针 p 向后移动一位。因此,第一个 *p++ 输出的是字符 '1',但是 p 指针已经向后移动了一位,此时指向字符 '2',第二个 *p++ 输出的是字符 '2',但是 p 指针已经向后移动了一位,此时指向字符 '3',第三个 *p++ 输出的是字符 '3'。因此最终的输出结果是 "321"。非常抱歉之前的回答仍然有误,感谢您的耐心纠正。
相关问题
void UART_int() interrupt 4 { if(*p == '\0') //输出到字符串尾时,重新从字符串头开始 { p = string; delay200ms(); } SBUF = *p++; //输出字符串中的当前字符 TI = 0; //清除TI标志 } /****************************************************** 主函数:实现了串口的字符串传送,51开发板发送,PC端接收。 ******************************************************/ main() { uart_Init(); //串口初始化 SBUF = *p++; //发送第一个字符 while(1) { if(*p == '\0') //输出到字符串尾时,重新从字符串头开始 { p = string; delay200ms(); } SBUF = *p++; //输出字符串中的当前字符 } }为什么会出现数据传送错误的情况
数据传送错误可能会出现以下几种情况:
1. 波特率设置错误:串口通信双方的波特率必须相同,否则会出现数据传输错误。
2. 延时不足:在发送数据之后,需要一定的时间让数据传输完成,否则可能会出现数据传输错误。
3. 缓存溢出:当发送数据速度过快时,缓存可能会溢出,导致数据传输错误。
4. 电源噪声:电源噪声可能会影响串口通信,导致数据传输错误。
针对以上问题,可以进行如下解决方案:
1. 确保双方的波特率相同。
2. 增加适当的延时,确保数据传输完成。
3. 增加缓存大小或者调整发送数据速度,避免缓存溢出。
4. 确保电源稳定,减少电源噪声的影响。
#include <stdio.h> int main() { char s[]="123",*p; p=s; printf("%c%c%c\n",*p++,*p++,*p++); return 0; }
这段代码的输出结果是 "321"。首先,将字符串 "123" 存储在字符数组 s 中,然后将指针 p 指向 s 的首地址。接着,printf 函数中使用了三个 *p++,这表示先输出当前指针所指向的字符,再将指针 p 向后移动一位。因此,第一个 *p++ 输出的是字符 '1',第二个 *p++ 输出的是字符 '2',第三个 *p++ 输出的是字符 '3',所以最终的输出结果是 "321"。
阅读全文