[英]Can't understand state (void)(x == y) and 1; in linux typecheck macro
[英]Can't understand x *= y+1 output
我在理解代碼輸出時遇到問題。 請解釋一下......
#include<stdio.h>
void main()
{
int x=2,y=5;
x*=y+1;
printf("%d",x);
}
輸出為12.但根據我的理解x*=y+1;
是x=x*y+1;
但是根據運算符優先級x*y
應該被評估,然后adding 1
所以它應該是10 + 1 = 11。 但它是12 - 有人可以解釋嗎?
它將被評估為
x = x * (y + 1);
所以
x = 2 * ( 5 + 1 )
x = 12
這里發生的是如何在編程中發生操作順序。
是的,如果你有這個等式x*y+1
,它將是(x * y ) + 1
並導致11。
但是,在編程中,方程式的右側=
符號由符號前進的被修改解決了現有=
標志。 在這個等式中,它是相乘的。
所以x *= y + 1
實際上是x = x * ( y + 1 )
,它將是12。
^在這種情況下, asterisk(*)
將右側的整個等式乘以x
,然后將該結果賦值給x
。
它被翻譯成: x = x*(y+1);
很明顯它打印出12。
你的理解是正確的,但它是這樣的:
x*=y+1; => x = x * (y + 1);
現在申請BODMAS
x *= y + 1
是x = x * (y + 1)
運算符+
優先級高於運算符*=
。
x*=y;
像x=x*y;
這里x*=(y+1)
像x = x * (y + 1);
那樣得到擴展x = x * (y + 1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.