gpt4 book ai didi

c - bool 表达式看似合乎逻辑,但不起作用

转载 作者:行者123 更新时间:2023-12-02 09:10:11 26 4
gpt4 key购买 nike

我正在 C 程序中读取 3 个整数并将它们存储在 int *[] 中。然而,在读取第三个 int 时,我想将它与前两个进行比较,如果它大于它们,则程序结束,如果不是,程序将继续读取第三个。输入,直到满足 while 循环中的条件。

我的问题是,虽然 bool 表达式看起来合乎逻辑(至少对我来说)并且我输入的值已成功存储在数组中,但为什么它总是跳过 while 循环?

#include <stdio.h>

int main(void) { // Stelios Papamichail 4020
int *sides[3];
int i;
for(i=0; i < 3; i++) {
if(i == 2) {// third side
scanf(" %d",&sides[i]);
while((sides[i] < sides[i-1]) && (sides[i] < sides[i-2])) {
scanf(" %d",&sides[i]);
}
} else {
scanf(" %d",&sides[i]);
}
}
return 0;
}

最佳答案

代码中的主要问题是,它调用 undefined behavior .

在代码中详细说明

 int *sides[3];

您正在定义一个由 3 个 int * 组成的数组(由 3 个指向整数的指针组成的数组),而您需要的是一个由 3 个 int 组成的数组。将其更改为

int sides[3];

也就是说,根据您的要求,如果您想检查 while 条件中的 && 应该是 ||第三个输入是最小的。

关于c - bool 表达式看似合乎逻辑,但不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53300417/

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