toot.wales is one of the many independent Mastodon servers you can use to participate in the fediverse.
We are the Open Social network for Wales and the Welsh, at home and abroad! Y rhwydwaith cymdeithasol annibynnol i Gymru, wedi'i bweru gan Mastodon!

Administered by:

Server stats:

608
active users

I dont suppose there's any way to do logical and/or in C without coercing the result to 0 or 1?

I.e. `0 || 5` would result in 5, not 1

EDIT: ternary would work `x ? x : y`

It's so irritating that something as simple as logical and/or isn't the same in different languages :/

In some languages 0 or 5 is 1, in others 0 or 5 is 5

Suppose I could make an inline function like

int or(int x, int y) {
if (x) return x;
return y;
}

EDIT: this won't work cause it'll evaluate both arguments

ok i think this will work even if nested, without statement expressions (so will compile on MSVC)

ORV(x, y) (tmp = (x) ? tmp : (y))
ANDV(x, y) (tmp = (x) ? (y) : tmp)

the AND version felt dicey but i realized that if you get to the (y) expression the tmp value is never evaluated so it's fine if it gets clobbered

Giles Goat

@eniko If you do you own function, why don't use if/then/else instead of 'risking' with the ? thing ? .. At this point I won't change too much I suppose.

@gilesgoat because you can't do if/then/else inline in an expression