社区讨论

c语言 只出现了代码中前置++ 与后置++的不同 却导致打印失败

P1321单词覆盖还原参与者 3已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo7v12gr
此快照首次捕获于
2023/10/27 08:13
2 年前
此快照最后确认于
2023/10/27 08:13
2 年前
查看原帖
正好打着这个题 想练练用scanf函数循环输入单个字符 用的是 do while 循环,我寻思在表达式那里直接就把循环数给递增了,(毕竟是无比自由的c语言),但前置++可以正常输出,后置++就不行,我试着分析了下,没分析明白,大佬求解!!
C
int main()
{
    char c_A[256]={};
    int cir=0;
    do
    {
        scanf("%c",&c_A[cir]);
    }
    while(c_A[cir]!='\n' && ++cir);//就是这里
    for(cir--;cir>=0;cir--)
    {
        printf("%c",c_A[cir]);
    }
    return 0;
}

下面是后置++ 方便大佬测试
C
int main()
{
    char c_A[256]={};
    int cir=0;
    do
    {
        scanf("%c",&c_A[cir]);
    }
    while(c_A[cir]!='\n' && cir++);
    for(cir--;cir>=0;cir--)
    {
        printf("%c",c_A[cir]);
    }
    return 0;
}

这个 括号内 逻辑与 后面的cir自增 我理解它不是前置后置都可以 也不影响啥。。。。我这个想法是不是错了。。 不在这个while的括号里写 我倒是写出来了,就是想知道这里的前置 和后置 差在哪了(还是我的编译器有问题。。 再感谢一次大佬!!!

回复

5 条回复,欢迎继续交流。

正在加载回复...