I recently decided to insert a few comma operators into the output lines of my C++ code and I feel like they've cleaned up my code a lot.
For example, I had this code:
Just an FYI, printBitsForInt() takes an int and prints out the bits from it. I couldn't find any way to overload the insertion operator between a stream and an int (because it's already defined by C++.) I couldn't find any stream parameters for cout I could set to make it print ints as binary, either. I tried using a bitset container, but it didn't allow its contents to be printed out with the grouping I wanted (groups of nine bits with spaces between them.)
And by introducing a few sequence points I feel like I was able to clean it up quite a bit, improve legibility, and reduce the amount of space it takes up.
I'm a little confused why I so rarely see anyone using them.
I'm wondering if I could use the same basic idea in the future with some C or Obj-C code.
Also, is there any real difference between using the comma operator and inserting a semicolon? I feel like the compiler probably generates the same code for both, wouldn't it?
Are there any other good uses for the comma operator?
For example, I had this code:
Code:
cout << "Can't place " << v << " at " << x << ", " << y << endl << "Add: ";
printBitsForInt(mask);
cout << "Old: ";
printBitsForInt(conflicts[v-1]);
cout << endl;
Just an FYI, printBitsForInt() takes an int and prints out the bits from it. I couldn't find any way to overload the insertion operator between a stream and an int (because it's already defined by C++.) I couldn't find any stream parameters for cout I could set to make it print ints as binary, either. I tried using a bitset container, but it didn't allow its contents to be printed out with the grouping I wanted (groups of nine bits with spaces between them.)
And by introducing a few sequence points I feel like I was able to clean it up quite a bit, improve legibility, and reduce the amount of space it takes up.
Code:
cout << "Can't place " << v << " at " << x << ", " << y << endl
<< "Add: ", printBitsForInt(mask), cout << endl;
<< "Old: ", printBitsForInt(conflicts[v-1]), cout << endl;
I'm a little confused why I so rarely see anyone using them.
I'm wondering if I could use the same basic idea in the future with some C or Obj-C code.
Also, is there any real difference between using the comma operator and inserting a semicolon? I feel like the compiler probably generates the same code for both, wouldn't it?
Are there any other good uses for the comma operator?