簡體   English   中英

C運算符的執行順序

[英]Order of execution of C operators

#include <stdio.h>

int main(void) {

    int i;
    i = 10;
    i*= 10+2;
    printf("%d",i);
    return 0;
}

為什么下面的代碼120而不是102的輸出?

因為優先順序使'+'高於* =,所以10 + 2將在i * =之前出現。

有關訂購的C參考,網址為http://en.cppreference.com/w/c/language/operator_precedence

在這一行中,i * = 10 + 2; 在這種情況下12乘以i表示i = 10 * 12; 所以它會給120的答案

解決此問題的方法請嘗試此。

i*= 10;
i+=2;

您的代碼像。

i= i*(10+2)

所以給出的答案是120。

如果你想像102那樣做。

i=i*10+2 

這個

i*= 10 + 2;

是語法糖

i= i * (10 + 2);

其余的優先級從左到右,在多/除后加和減

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM