[Bug c/40241] New: ?: operator incorrectly groups left in cpp
walton at seas dot harvard dot edu
gcc-bugzilla@gcc.gnu.org
Mon May 25 08:27:00 GMT 2009
The ?: operators are supposed to group right. In gcc they do, but in cpp they
do not (i.e., they seem to group left in #if statements).
Example:
#include <iostream>
using std::hex;
using std::dec;
using std::cout;
using std::endl;
int main()
{
# if ( 1 ? 0x0DFFFFFF : 3 < 5 ? 1ull << 36 : 1ull << 40 ) <= 0xDFFFFFFF
cout << "OK GROUPING" << endl;
# else
# error BAD GROUPING
# endif
# if ( 1 ? 0x0DFFFFFF : ( 3 < 5 ? 1ull << 36 : 1ull << 40 ) ) <= 0xDFFFFFFF
cout << "OK WITH UNNESSARY PARENTHESES" << endl;
# else
# error BAD WITH UNNECESSARY PARENTHESES
# endif
}
This outputs the BAD GROUPING error.
--
Summary: ?: operator incorrectly groups left in cpp
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: walton at seas dot harvard dot edu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40241
More information about the Gcc-bugs
mailing list