关于#c语言# 运算符的问题



#include 

int main()
{
    int a = 1, i = a + 1;
    do
    {
        a++;

    } while (!~i++ > 3);

    printf("%d\n",a);
}

请问while里面的条件先运算哪一个?

该回答引用GPTᴼᴾᴱᴺᴬᴵ

  • 在C语言中,条件语句的计算顺序是从左往右的。在这个代码片段中,!i++ > 3的计算顺序是先执行i++,即先对变量i取反(~运算符表示按位取反),再对i进行自增操作(++运算符表示自增1)。最后将这个结果与3进行比较,如果比3大,则条件成立,否则条件不成立。

  • 注意,由于!运算符优先级较高,因此在进行比较操作之前,会先将取反操作的结果取反,即还原原始的值。因此!i++ > 3实际上等价于i++ <= 3。

参考GPT和自己的思路:

while里面的条件会先运算i++,然后再进行!~操作符的运算。

先逻辑取反~,再!取反,再判断取反后是否大于3,最后i加上1

参考:
https://baike.baidu.com/item/%E8%BF%90%E7%AE%97%E7%AC%A6%E4%BC%98%E5%85%88%E7%BA%A7/4752611?fr=aladdin ~ ! 运算符优先级相同,结合性从右到左
所以是先++再~最后!