簡體   English   中英

不理解計算

[英]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;

並且*p2b ,即4 *p1a這是12所以表達式為:

y = 4 * -4 / 12 + 10;

這評估為:

y = ((4 * -4) / 12) + 10;

這是

y = (-16 / 12) + 10;

這是

y = -1 + 10;

編碼

4* - *p2

手段

4 * (-*p2)

所以*在這里意味着簡單的乘法。

熟悉C優先級和關聯表:

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.

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