Shortest conditional to run a specific statement: C code golf

0

Currently I have the code (expanded for your benefit):

<number> != <number> ? printf("|\\"); : <number>;

The idea here, is to do this condition in the least number of characters. This is currently, roughly the same number of characters it would take to be doing the exact same thing using an if statement, due to the fact, that I am fulfilling the second argument of the ternary operator which does not need to be filled, it is simply filled, as otherwise the statement does not run. (the final number is really a variable).

Is there any possible way to do the same conditional but shorter? (in C)

Bernie

Posted 2013-02-23T04:51:27.973

Reputation: 103

Answers

5

if(x!=y)printf("foo\n");
x!=y?printf("foo\n"):0;
x==y||printf("foo\n");

Yes, you can save some characters with the ternary operator or with the shortcutting logic operators (&& and ||). All three of the above do the same thing. Which you can use depends on things like the return type of printf and whether you need the return value.

Does that answer your question?

Keith Randall

Posted 2013-02-23T04:51:27.973

Reputation: 19 865

Very good, excellent answer. – Bernie – 2013-02-23T06:50:09.070

2

A year late but one whole character shorter.

x-y&&printf("foo\n");

Alchymist

Posted 2013-02-23T04:51:27.973

Reputation: 544