Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
235 views
in Technique[技术] by (71.8m points)

C++ Pointers question :The output for absolute difernce is incorrect .for eg. a=4 and b=5 then expected output is 9 and 1 but it is coming as 9 and 4

The output for absolute difernce is incorrect .for eg. a=4 and b=5 then expected output is 9 and 1 but it is coming as 9 and 4

#include <stdio.h>

void update(int *a,int *b) {
    int t{0};
    // Complete this function  
     *a = *a + *b;
    if (*a>*b) {
   
    t= (*a) - (*b) ;
    
    }
    else {
    t =  (*b) - (*a);
    
      
    }  
    *b = t;
}

int main() {
    int a, b;
    int *pa = &a, *pb = &b;
    
    scanf("%d %d", &a, &b);
    update(pa, pb);
    printf("%d
%d", a, b);

    return 0;
}
question from:https://stackoverflow.com/questions/66065549/c-pointers-question-the-output-for-absolute-difernce-is-incorrect-for-eg-a

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The difference is calculated using the new value of *a, which is updated at *a = *a + *b;.

The calculation should be after calculating t.

void update(int *a,int *b) {
    int t{0};
    // Complete this function  
    if (*a>*b) {
   
    t= (*a) - (*b) ;
    
    }
    else {
    t =  (*b) - (*a);
    
      
    }  
    *a = *a + *b; // move this here
    *b = t;
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...