[英]Not understanding the calculation
我有以下C程序,我不理解以下程序的輸出。
#include <stdio.h>
int main()
{
int a,b, *p1, *p2, x,y,z;
a=12;
b=4;
p1=&a;
p2=&b;
x=*p1 * *p2-6;
y=4* - *p2 / *p1+10;
printf("y=%d", y);
return 0;
}
程序的輸出是9.但4 *的含義是什么?
此行中的間距可能會導致混淆:
y=4* - *p2 / *p1+10;
這相當於:
y = 4 * (-*p2) / *p1 + 10;
但是間距使它看起來像一個減法。
4 *是什么意思
*
有乘法運算符。 該提取中僅顯示一個操作數4
。 完全乘法是:
4* - *p2
更清楚地寫成
4 * -(*p2)
寫出表達式,替換值。 我們可以忽略x
因為它沒有被使用。 這離開了我們:
y= 4* - *p2 / *p1+10;
並且*p2
是b
,即4
。 而*p1
是a
這是12所以表達式為:
y = 4 * -4 / 12 + 10;
這評估為:
y = ((4 * -4) / 12) + 10;
這是
y = (-16 / 12) + 10;
這是
y = -1 + 10;
編碼
4* - *p2
手段
4 * (-*p2)
所以*在這里意味着簡單的乘法。
熟悉C優先級和關聯表:
將對此語句進行評估(為清晰起見,添加了括號):
x = ((*p1) * (*p2)) - 6;
x = ((12) * (4)) - 6
x = (48) - 6
x = 42
y = (4 * (-(*p2)) / (*p1)) + 10;
y = (4 * (-4) / (12)) + 10
y = (-16 / 12) + 10
y = -1 + 10
y = 9
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.