为什么for循环中间没起到判断作用

img


如果按数学看应该输出i等于负二,不进行for循环,为什么判断部分没起到作用

C语言条件不能写,-1<=i<1;应该要写-1<=i && i<1

哈喽你好呀!
首先呢,你这里语法是有错误的,我们不能用学数学的思维去写C,也就是我们不能去写 -1<=i<1 我们要去使用&& 去连接一下 也就是 -1<=i && i<1 他的意思翻译过来就是: i要小于1并且i要大于-1的意思呢。
然后对于您说的结果跟您预期的不一样这是因为,for中的第二个语句,它的含义并不是很明确。具体来说,这个循环条件实际上被转化为了两个比较运算符的链式表达式,然而这种写法并没有按照您期望的方式进行比较。在 C++ 中,这种形式的连续比较是可以进行编译的,但是其执行结果并不一定符合您的预期,且可能会因为不同的编译器实现而产生差异。
所以按上面的那个方法改了之后就可以得到预期的一个答案啦!

#include<bits/stdc++.h>

using namespace std;

int main()
{
    int a = 1;
    int i = -2;
    
    for(;-1 <= i && i < 1; i++)
    {
        a++;
        cout << a << endl;
    }
    
    cout << i << endl;

    return 0;
}



不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^