#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 ~ ! 运算符优先级相同,结合性从右到左
所以是先++再~最后!