Functions
Return Values
A function can return a computed value to the caller.
return
`return` sends a value back to the caller and exits the function.
caller
The caller stores or uses the returned value.
Return Values
return_values.c
Replay: real traced execution (multi-file project)
#include <stdio.h>
int clamp(int value, int max) {
if (value > max) {
return max;
}
return value;
}
int main(void) {
int input = 12;
int result = clamp(input, 10);
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int clamp(int value, int max) {
if (value > max) {
return max;
}
return value;
}
int main(void) {
int input = 7;
int result = clamp(input, 10);
printf("result=%d\n", result);
return 0;
}
#include <stdio.h>
int clamp(int value, int max) {
if (value > max) {
return max;
}
return value;
}
int main(void) {
int input = 20;
int result = clamp(input, 10);
printf("result=%d\n", result);
return 0;
}
input ← 12
10int main(void) {11 int input→ 12 = 12; //@input=7, 2012 int result = clamp(input12, 10);int clamp(int value, int max)
3int clamp(int value12, int max10) {4 if (value > max) {if (value > max)
3int clamp(int value, int max) {4 if (value12 > max10) {5 return max10;6 }result ← 10
11 int input = 12; //@input=7, 2012 int result→ 10 = clamp(input12, 10);1314 printf("result=%d\n", result10);15 return 0;16}outputresult=10
input ← 7
10int main(void) {11 int input→ 7 = 7;12 int result = clamp(input7, 10);int clamp(int value, int max)
3int clamp(int value7, int max10) {4 if (value > max) {5 return max;6 }7 return value7;8}result ← 7
11 int input = 7;12 int result→ 7 = clamp(input7, 10);1314 printf("result=%d\n", result7);15 return 0;16}outputresult=7
input ← 20
10int main(void) {11 int input→ 20 = 20;12 int result = clamp(input20, 10);int clamp(int value, int max)
3int clamp(int value20, int max10) {4 if (value > max) {if (value > max)
3int clamp(int value, int max) {4 if (value20 > max10) {5 return max10;6 }result ← 10
11 int input = 20;12 int result→ 10 = clamp(input20, 10);1314 printf("result=%d\n", result10);15 return 0;16}outputresult=10
Follow the Return
inputstarts as12.clamp(input, 10)passes12and the maximum10.- Inside
clamp,12 > 10is true. - The function returns
10. resultstores that return value, so the program printsresult=10. | input | max | returned result | | --- | --- | --- | | 12 | 10 | 10 | | 7 | 10 | 7 | | 20 | 10 | 10 |
Exercise: return_values.c
Reproduce result=10, then use the pinned input variants 7 and 20 to predict result=7 and result=10.