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

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

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

问题补充:
图片说明

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

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • chen风 2019-08-16 22:03
    已采纳

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

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

    已采纳该答案
    打赏 评论
  • threenewbee 2019-08-16 22:13

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

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

    打赏 评论
  • JonathanYan 2019-08-16 22:23

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

    打赏 评论

相关推荐 更多相似问题