azazinco
azazinco
采纳率44.4%
2019-08-16 21:06

有两个问题请教一下,初学c语法看不懂

5
已采纳

图片说明
这边++last和i的值是一样的吗,假设left=2不就是v[3]和v[3]交换数值了吗
图片说明
2处为什么不是i++,++i的话就没用到s[0]了吧

问题补充:
图片说明

这个是问题2的完整版,为什么22+输出的不是4而是 error: stack empty
22
这不是划线部分输出的吗

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • zatzat chen风 2年前

    i = left + 1 是初始化,只用一次,每个循环i都要加1,
    ++last 是初始的left +1 , 不想等的

    2处 用++i 是为了接收第二位数字, 比如你要输入13, ++i是接收3

    点赞 1 评论 复制链接分享
  • caozhy 回答这么多问题就耍赖把我的积分一笔勾销了 2年前

    last是最后一个,left是左边分区(比排序哨兵小的元素)的界限

    如果是 ++i的话,那么读取到的字符是最后一个数字,而不是后面的小数点。

    点赞 1 评论 复制链接分享
  • JonathanYan JonathanYan 2年前

    第一个情况应该是按一般情况处理了吧,在以后的循环都增加判断开销和在这一次增加运算开销间权衡的,个人理解。
    第二个问题里在最初使得while里已经读入了s[0],所以后面要从s[1]开始添加

    点赞 评论 复制链接分享