3 ms·
I too, love coding in C. I love how you can control almost everything. There's nothing "mysterious" or abstracted away. Maybe I'm OCD, but I love understanding
by memn0nis 7y ago
I too, love coding in C. I love how you can control almost everything. There's nothing "mysterious" or abstracted away. Maybe I'm OCD, but I love understanding exactly what is going on in my programs at all times
- klingonopera 7y ago#include <stdio.h> int main() { char a = 3; char b = 8; char result = a * b; printf("%u %u %u %u", sizeof(a), sizeof(b), sizeof(result), sizeof(a * b)); return 0; } PRINTOUT/x86-64: 1 1 1 4 Surprising results on x86, probably not on Arduino or embedded platforms. The phenomenon is integer promotion in C. EDIT: "Char isn't an arithmetic type!" The same is true for short, too. EDIT2: The consequences are: Might need to manually %= 0x100 instead of relying on data type's inherent modulation in multi-operational arithmetic, making rotation a necessarily pre-scan operation for LE/BE conversion instead of a process-transparent operation and I had a third one... hm. Also, maybe speed loss?