C和*的优先级

Kap*_*arg 1 c operator-precedence

我没有得到答案背后的逻辑.我试图打印一个后定义的值,它显示a = 72.请帮忙.

    #include<stdio.h>
    main()
    {
       int a=400*400/400;
       if(a==400)
       printf("Do good");
       else
       printf("Have good");
    }
Run Code Online (Sandbox Code Playgroud)

输出:好

LPs*_*LPs 10

我想在你的平台上int是2字节宽,16位.

然后

400*400 = 28928
Run Code Online (Sandbox Code Playgroud)

由于溢出

28928/400 = 72
Run Code Online (Sandbox Code Playgroud)

  • 只是一个问题:为什么不将`400*400`提升为更大的类型,如`long`然后**成功**除以'400`并且**之后**被截断,因为较大的类型不适合一个`int`?希望你明白我的意思.^^ (2认同)