小编use*_*743的帖子

&&和|| 运营商

我遇到了这段代码:

    int main()
    {
        int i=1,j=2,k=0,m=0;
        m = ++i || ++j && ++k;
        printf("%d %d %d %d %d",i,j,k,m);
    }
Run Code Online (Sandbox Code Playgroud)

该程序返回2 2 0 1....为什么?

&&具有更高的优先级高于||所以++j && ++k应先评估.因此我会期待j=3k=1.它将返回true,因此||变为true,因此++i不应进行评估.但它以其他方式工作.

我希望别人向我解释.

c boolean operators

3
推荐指数
2
解决办法
1455
查看次数

标签 统计

boolean ×1

c ×1

operators ×1