this post was submitted on 13 Dec 2025
651 points (97.7% liked)

Programmer Humor

28593 readers
1157 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] spongebue@lemmy.world 2 points 1 month ago (5 children)

x = -i;

Do many languages let you do that? When it's in front of a variable I would've expected it to be a subtraction operator only and you would need to do x = -1 * i;

[–] EvilHankVenture@lemmy.world 7 points 1 month ago

In most languages I've seen - is both a unary negation operator and a subtraction operator depending on context. So it would negate an integer literal or a variable in this context.

[–] boonhet@sopuli.xyz 2 points 1 month ago (1 children)

Personally I would expect it to behave the same in front of a numeric literal and in front of a variable. I do think most languages do that, but I haven't actually tested that many and could br wrong.

[–] squaresinger@lemmy.world 1 points 1 month ago

Pretty much all languages do that. It's a very basic language feature inherited from basic maths notation. Same as x - y subtracts y from x in pretty much any language that supports operators.

[–] OshaqHennessey@midwest.social 2 points 1 month ago (1 children)

I just tested it in PowerShell. Works fine

$i = 1
$x = -$i
$x

Outputs -1

[–] squaresinger@lemmy.world 2 points 1 month ago (1 children)

Works fine in any language I ever used.

I'm honestly quite surprised that this very basic language feature is even a matter of discussion here.

[–] Sylvartas@lemmy.dbzer0.com 2 points 1 month ago (1 children)

It certainly makes me question a lot of things. This sub somehow manages to both feed my impostor syndrome and makong me feel like a genius programmer depending on the thread.

[–] squaresinger@lemmy.world 2 points 1 month ago* (last edited 1 month ago) (1 children)

Totally, yes. I guess there's a ton of non-programmers and total beginners in this community.

But sometimes there are some crazy good programmers here as well.

What's really weird though is that I got two downvotes a bit further up for claiming that unary minus is a standard language feature.

[–] Sylvartas@lemmy.dbzer0.com 2 points 1 month ago

Yeah I saw that. It's weird because I've used it without a second thought in tons of different languages and never had issues with it

[–] squaresinger@lemmy.world 2 points 1 month ago* (last edited 1 month ago) (1 children)

Why would they not let you do that? I honestly don't know a single language that wouldn't let you do that. Same as basic math notation allows you to do that.

x = -i

is a totally valid mathematical equation.

For the downvoters: Find me a single language that supports operators but doesn't have an unary minus operator

[–] spongebue@lemmy.world 1 points 1 month ago (1 children)

It's a valid mathematical notation, sure. But there is an implicit understanding that the - in this case is making a number negative rather than subtracting (or, an implicit subtraction from 0).

With the way negative numbers generally work in binary there would be much different ones and zeroes stored behind the scenes, so handling that would have to be pretty intentional.

That said, I did just try it in Java because that's what I work in normally and I swear I had a gotcha with that. But it worked fine as far as I can tell.

[–] squaresinger@lemmy.world 2 points 1 month ago* (last edited 1 month ago)

Find me a language where it doesn't work like that, and we'll continue the discussion.

Unary minus operator is standard in every single language that I used so far, including C/C++, Java, Python, Kotlin, Lua, JS/TS, Groovy, PHP, Visual Basic, Excel, Mathematica, Haskell, Bash.

Here's more info btw: https://en.wikipedia.org/wiki/Unary_operation

[–] quilan@lemmy.world 1 points 1 month ago (2 children)

But of course -- It's just flipping around the -= operator!

[–] squaresinger@lemmy.world 3 points 1 month ago (1 children)

Nope, it is not.

x = 5
i = 2
x -= i // x => 3

while

x = 5
i = 2
x = -i // x => -2

x=-i is the unary minus operator which negates the value right of it. It doesn't matter if that value is a literal (-3), a variable (-i) or a function (-f()).

x-=i is short for x = x-i, and here it's a binary subtraction, so x is set to the result of i subtracted from x.

[–] quilan@lemmy.world 2 points 1 month ago (1 children)

I need to append /s to my future silly replies I think... that said, I'll never pooh-pooh a well thought response, so thanks for the nice write-up!

[–] squaresinger@lemmy.world 2 points 1 month ago* (last edited 1 month ago)

Thanks, I totally missed your sarcasm :)

There's a couple people in this threat who seem to actually think that x = -i is some weird magic instead of a standard feature that's present in every major programming language.

[–] spongebue@lemmy.world 1 points 1 month ago* (last edited 1 month ago)

That only works if x is already 0

If i is 10 and x is zero, yes, x -= i would have a value of -10. If x was 5 from something else previously, x-=i would end with an x value of -5.