April 04, 2016 Shouldn't the following code produce a warning? | ||||
---|---|---|---|---|
| ||||
The values of the variables here can be determined during compilation. Should there be some kind of warning like, unsigned integer may not be compared to a value less than zero; or there shouldn't be since the programmer should have known what he's doing? import std.stdio; void f1() { uint n = 0; uint ans = n - 1u; if (ans < 0) { // warning? writeln("Less than or equal 0."); } else { writeln("Just like C++."); } } void f2() { const uint n = 0; const uint ans = n - 1u; static if (ans < 0) { // warning? writeln("Less than or equal 0."); } else { writeln("Just like C++."); } } void main() { f1(); f2(); } |
April 03, 2016 Re: Shouldn't the following code produce a warning? | ||||
---|---|---|---|---|
| ||||
Posted in reply to ric maicle | On Monday, April 04, 2016 13:23:16 ric maicle via Digitalmars-d-learn wrote: > The values of the variables here can be determined during compilation. Should there be some kind of warning like, unsigned integer may not be compared to a value less than zero; or there shouldn't be since the programmer should have known what he's doing? Agruably, it should generate a warning, but it doesn't currently. There are these two related bug reports / enhancement requests though: https://issues.dlang.org/show_bug.cgi?id=6949 https://issues.dlang.org/show_bug.cgi?id=259 - Jonathan M Davis |
Copyright © 1999-2021 by the D Language Foundation