Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #153912
| From | Keith Thompson <Keith.S.Thompson+u@gmail.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: max of 3 |
| Date | 2020-08-22 16:06 -0700 |
| Organization | None to speak of |
| Message-ID | <875z9a701d.fsf@nosuchdomain.example.com> (permalink) |
| References | <da872028-3be4-4d30-8617-3a3c74c9e97fn@googlegroups.com> <87d03j57lg.fsf@bsb.me.uk> <Zn60H.1387423$rLg.1259802@fx49.ams4> <4e0bd5c4-6cf2-4ed2-993b-9df9801296ean@googlegroups.com> |
axel porin <porinaxel@gmail.com> writes:
> Le samedi 22 août 2020 à 12:25:07 UTC+2, Bart a écrit :
>> On 22/08/2020 10:54, Ben Bacarisse wrote:
>> > axel porin <pori...@gmail.com> writes:
>>
>> >> int main(){
>> >> int a=2,b=-4,c=6;
>> >> printf("%d ",max3(a,b,c));
>> >
>> > I'm curious. Why not write
>> >
>> > printf("%d\n", max3(2, -4, 6));
>> >
>> > ?
>> I'm surprised at this advice. Presumably the intention is to eventually
>> have a, b and c populated by other means (eg. from the user), but values
>> are currently hardcoded.
>>
>> And maybe the values will be printed out first, or as part of the output:
>>
>> printf("Max3(%d, %d, %d) = %d\n", a,b,c, max3(a,b,c));
>>
>> This all becomes harder with your suggestion.
> what should i write to get the warnings
It depends on what compiler and programming environment you're using,
and you haven't told us that.
Following this thread, you're still posting code that isn't
indented properly. If you're on a Unix/Linux-like system, read
the documentation for the "indent" command; I suggest "indent -kr".
Other systems are likely to have code formatters (perhaps even your
text editor can do this).
Here's your original program from the top of this thread:
int max3(int a,int b,int c){
if(a<b)
if(b<c)
return c;
else
return b;
}
int main(){
int a=2,b=-4,c=6;
printf("%d ",max3(a,b,c));
}
Note that within the body of max3, every line is at the same indentation
level, even though there are several logical levels.
Here's my second draft of your program, with no semantic changes other
than adding the required "#include <stdio.h>". (If your actual program
doesn't have that and you didn't get a warning for the call to printf,
you also need to crank up the diagnostics on your compiler. If you did
have "#include <stdio.h>", please include it when you post.)
#include <stdio.h>
int max3(int a, int b, int c) {
if (a < b)
if (b < c)
return c;
else
return b;
}
int main(void) {
int a = 2, b = -4, c = 6;
printf("%d ", max3(a, b, c));
}
The indentation makes it much more obvious that you don't do anything if
the first (a < b) condition is false. And knowing that a < b doesn't
tell you whether b or c is the maximum value.
Some of the changes I've made are a matter of personal taste. The
language doesn't require white space in most contexts, but I like to add
a certain amount to make the code clearer. Others prefer or or less
white space. I like spaces around most operators ("a < b" rather than
"a<b"). I also always put a space after each comma, and after "if"
(primarily so that "if (condition)" doesn't look like a function call).
"int main()" is better written as "int main(void)". This is a minor
point, and your compiler probably doesn't care. (I could expound on
this point at some length, but it's not relevant for now.)
My personal preference is to (almost) *always* use curly braces for
control statements (if, for, while, etc.). It makes the code easier to
read (at least for me), and can prevent errors when you later add more
statements. (It's a habit I picked up from Perl, which requires it.)
Here's the program again with curly braces added:
#include <stdio.h>
int max3(int a, int b, int c) {
if (a < b) {
if (b < c) {
return c;
}
else {
return b;
}
}
}
int main(void) {
int a = 2, b = -4, c = 6;
printf("%d ", max3(a, b, c));
}
Using curly braces *and* correct indentation is a belt-and-suspenders
approach. It's not strictly necessary, but it means that an error in
either the indentation or in the braces is likely to stand out. It's
for the benefit of the human reader, not for the compiler. This version
is still incorrect.
Note that some programmers prefer to put the opening "{" on a line by
itself, aligned with the closing "}". Both styles are valid.
Personally, I prefer putting the "{" on the end of the line.
Now let's fix the code so it actually works. I've taken the liberty of
pretty much rewriting max3() from scratch.
#include <stdio.h>
int max3(int a, int b, int c) {
if (a >= b && a >= c) {
return a;
}
else if (b >= c) {
return b;
}
else {
return c;
}
}
int main(void) {
int a = 2, b = -4, c = 6;
printf("%d\n", max3(a, b, c));
}
Look at the way the logic flows. Either a, b, or c has the maximum
value (perhaps more than one of them if there are duplicates).
We first check whether a has the maximum value. If it doesn't,
we check whether b has the maximum value. If it doesn't, c does.
Note that I've added a newline "\n" to the printf call. Output should
(almost) always end with a newline character.
As others have pointed out, you can also build max3 on top of a simpler
max2 function:
#include <stdio.h>
int max2(int a, int b) {
if (a >= b) {
return a;
}
else {
return b;
}
// could also be:
// return a >= b ? a : b;
}
int max3(int a, int b, int c) {
return max2(max2(a, b), c);
}
int main(void) {
int a = 2, b = -4, c = 6;
printf("%d\n", max3(a, b, c));
}
--
Keith Thompson (The_Other_Keith) Keith.S.Thompson+u@gmail.com
Working, but not speaking, for Philips Healthcare
void Void(void) { Void(); } /* The recursive call of the void */
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar
max of 3 axel porin <porinaxel@gmail.com> - 2020-08-22 02:12 -0700
Re: max of 3 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 02:38 -0700
Re: max of 3 axel porin <porinaxel@gmail.com> - 2020-08-22 03:24 -0700
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-22 15:53 +0200
Re: max of 3 Elijah Stone <elronnd@elronnd.net> - 2020-08-22 19:03 -0700
Re: max of 3 James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-22 22:13 -0400
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-23 13:42 +0200
Re: max of 3 Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 10:54 +0100
Re: max of 3 Bart <bc@freeuk.com> - 2020-08-22 11:24 +0100
Re: max of 3 axel porin <porinaxel@gmail.com> - 2020-08-22 03:29 -0700
Re: max of 3 axel porin <porinaxel@gmail.com> - 2020-08-22 03:38 -0700
Re: max of 3 axel porin <porinaxel@gmail.com> - 2020-08-22 04:06 -0700
Re: max of 3 James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-22 07:49 -0400
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-22 15:58 +0200
Re: max of 3 Poprocks <please@replytogroup.com> - 2020-08-22 15:15 -0400
Re: max of 3 James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-22 16:49 -0400
Re: max of 3 Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-22 20:56 +0000
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-22 22:56 +0200
Re: max of 3 James Kuyper <jameskuyper@alumni.caltech.edu> - 2020-08-22 17:04 -0400
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-23 13:55 +0200
Re: max of 3 Poprocks <please@replytogroup.com> - 2020-08-22 17:33 -0400
Re: max of 3 Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-23 05:54 +0000
Re: max of 3 axel porin <porinaxel@gmail.com> - 2020-08-23 01:59 -0700
Re: max of 3 Jorgen Grahn <grahn+nntp@snipabacken.se> - 2020-08-23 10:22 +0000
Re: max of 3 Öö Tiib <ootiib@hot.ee> - 2020-08-23 03:27 -0700
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-23 14:05 +0200
Re: max of 3 Bart <bc@freeuk.com> - 2020-08-23 14:09 +0100
Re: max of 3 David Brown <david.brown@hesbynett.no> - 2020-08-23 15:58 +0200
Re: max of 3 Bart <bc@freeuk.com> - 2020-08-23 11:33 +0100
Re: max of 3 Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-23 07:04 -0700
Re: max of 3 John Forkosh <forkosh@panix.com> - 2020-08-24 10:26 +0000
Re: max of 3 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 16:26 -0700
Re: max of 3 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 16:06 -0700
Re: max of 3 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 16:41 -0700
Re: max of 3 Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 19:42 +0100
Re: max of 3 Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-22 12:27 +0200
Re: max of 3 Siri Cruise <chine.bleu@yahoo.com> - 2020-08-22 04:20 -0700
Re: max of 3 Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-22 17:14 +0200
Re: max of 3 Siri Cruise <chine.bleu@yahoo.com> - 2020-08-22 13:55 -0700
Re: max of 3 Daniel Hyde <Daniel.Hyde71@gmail.com> - 2020-08-23 11:18 +0200
Re: max of 3 Ben Bacarisse <ben.usenet@bsb.me.uk> - 2020-08-22 20:08 +0100
Re: max of 3 Bart <bc@freeuk.com> - 2020-08-22 13:01 +0100
Re: max of 3 gazelle@shell.xmission.com (Kenny McCormack) - 2020-08-22 16:23 +0000
Re: max of 3 Bart <bc@freeuk.com> - 2020-08-22 20:45 +0100
Re: max of 3 Barry Schwarz <schwarzb@delq.com> - 2020-08-22 08:26 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-22 14:45 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-22 14:47 -0700
Re: max of 3 axel porin <porinaxel@gmail.com> - 2020-08-22 15:16 -0700
Re: max of 3 luser droog <luser.droog@gmail.com> - 2020-08-22 15:28 -0700
Re: max of 3 Real Troll <real.troll@trolls.com> - 2020-08-22 19:50 -0400
Re: max of 3 Paul <nospam@needed.invalid> - 2020-08-22 19:44 -0400
Re: max of 3 Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-08-24 14:29 -0700
Re: max of 3 Barry Schwarz <schwarzb@delq.com> - 2020-08-22 18:32 -0700
Re: max of 3 Real Troll <real.troll@trolls.com> - 2020-08-23 12:30 -0400
Re: max of 3 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-22 16:37 -0700
Re: max of 3 Ike Naar <ike@sdf.org> - 2020-08-22 22:10 +0000
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-22 16:49 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-22 16:50 -0700
Re: max of 3 Real Troll<real.troll@trolls.com> - 2020-08-22 17:17 -0400
Re: max of 3 Barry Schwarz <schwarzb@delq.com> - 2020-08-22 18:22 -0700
Re: max of 3 luser droog <luser.droog@gmail.com> - 2020-08-22 15:42 -0700
Re: max of 3 luser droog <luser.droog@gmail.com> - 2020-08-22 15:52 -0700
Re: max of 3 Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-08-24 14:16 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-24 14:37 -0700
Re: max of 3 Malcolm McLean <malcolm.arthur.mclean@gmail.com> - 2020-08-24 15:25 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-24 20:15 -0700
Re: max of 3 luser droog <luser.droog@gmail.com> - 2020-08-24 20:32 -0700
Re: max of 3 luser droog <luser.droog@gmail.com> - 2020-08-24 23:35 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-27 14:03 -0700
Re: max of 3 "Chris M. Thomasson" <chris.m.thomasson.1@gmail.com> - 2020-08-28 23:35 -0700
Re: max of 3 Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-08-29 04:52 -0700
Re: max of 3 luser droog <luser.droog@gmail.com> - 2020-08-24 20:27 -0700
Re: max of 3 Vir Campestris <vir.campestris@invalid.invalid> - 2020-08-27 22:19 +0100
Re: max of 3 Keith Thompson <Keith.S.Thompson+u@gmail.com> - 2020-08-27 14:36 -0700
Re: max of 3 Kaz Kylheku <793-849-0957@kylheku.com> - 2020-08-27 22:27 +0000
Re: max of 3 Vir Campestris <vir.campestris@invalid.invalid> - 2020-08-31 22:07 +0100
Re: max of 3 Richard Damon <Richard@Damon-Family.org> - 2020-09-01 07:19 -0400
Re: max of 3 Tim Rentsch <tr.17687@z991.linuxsc.com> - 2020-08-29 05:19 -0700
Re: max of 3 DFS <nospam@dfs.com> - 2020-08-26 19:25 -0400
csiph-web