gpt4 book ai didi

c++ - 这两个条件有什么区别?

转载 作者:行者123 更新时间:2023-11-30 01:56:00 26 4
gpt4 key购买 nike

表达式 j > 0 && a[j - 1] > value_to_insert 出现在 sort_ints 函数的定义中。为什么将其重写为 a[j-1] > value_to_insert && j > 0 是 Not Acceptable ?我尝试将条件反过来,它给了我与原始输出相同的输出。

函数定义如下:

void sort_ints(int *a, int n)
{
int i;
int j;
int value_to_insert;

for (i = 1; i < n; i++) {
value_to_insert = a[i];

/* Shift values greater than value_to_insert. */
j = i;
while (j > 0 && a[j - 1] > value_to_insert) {
a[j] = a[j - 1];
j--;
}
a[j] = value_to_insert;
}
}

最佳答案

因为 short-circuiting && 运算符的属性,修改后的代码(您的“工作”版本,实际上不起作用)很可能会通过访问数组中的第 -1 个元素来调用未定义的行为。

关于c++ - 这两个条件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20182180/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com