digitalmars.D - Why is a variable allowed to be declared twice?
- jicman <jicman_member pathlink.com> Mar 08 2005
- brad domain.invalid Mar 08 2005
- "Matthew" <admin stlsoft.dot.dot.dot.dot.org> Mar 08 2005
- Ant <duitoolkit yahoo.ca> Mar 08 2005
- jicman <jicman_member pathlink.com> Mar 09 2005
As in,
import std.stdio;
void main()
{
int i;
for (int i=0;i<2;i++)
writefln(i);
}
Should not have the compiler complained about it being declared twice?
I missed this one and it caused me. :-)
thanks,
josé
Mar 08 2005
jicman wrote:As in, import std.stdio; void main() { int i; for (int i=0;i<2;i++) writefln(i); } Should not have the compiler complained about it being declared twice? I missed this one and it caused me. :-) thanks, josé
same as C++, and infact g++ doesn't even warn about i being hiding with -Wall on. On a standards compilant C++ compiler (which MSVC by default is not) this will break <code> for (int i=0; i < 10; i++) ; printf("%i\n", i); // should be an error because i is no longer in scope. </code> D has the same scoping rules for "for" loops. Brad
Mar 08 2005
Most/all decent C++ compilers warn about this ... <brad domain.invalid> wrote in message news:d0lrc9$12oo$1 digitaldaemon.com...jicman wrote:As in, import std.stdio; void main() { int i; for (int i=0;i<2;i++) writefln(i); } Should not have the compiler complained about it being declared twice? I missed this one and it caused me. :-) thanks, josé
same as C++, and infact g++ doesn't even warn about i being hiding with -Wall on. On a standards compilant C++ compiler (which MSVC by default is not) this will break <code> for (int i=0; i < 10; i++) ; printf("%i\n", i); // should be an error because i is no longer in scope. </code> D has the same scoping rules for "for" loops. Brad
Mar 08 2005
On Wed, 09 Mar 2005 16:43:34 +1300, brad wrote: but this looks like it shouldn't be valid (http://www.digitalmars.com/d/statement.html#block): import std.stdio; void main(char[][] args) { int i = 25; { int args; } { int i = 15; writefln("in ",i); } for (int i=0; i<2; i++) { writefln("for ",i); for (int i=425; i<427; i++) { writefln("\tfor ",i); } } writefln("out ",i); } #outputs# in 15 for 0 for 425 for 426 for 1 for 425 for 426 out 25 ## Ant
Mar 08 2005
yeah, well, I was right... :-) Ant says...On Wed, 09 Mar 2005 16:43:34 +1300, brad wrote: but this looks like it shouldn't be valid (http://www.digitalmars.com/d/statement.html#block): import std.stdio; void main(char[][] args) { int i = 25; { int args; } { int i = 15; writefln("in ",i); } for (int i=0; i<2; i++) { writefln("for ",i); for (int i=425; i<427; i++) { writefln("\tfor ",i); } } writefln("out ",i); } #outputs# in 15 for 0 for 425 for 426 for 1 for 425 for 426 out 25 ## Ant
Mar 09 2005









"Matthew" <admin stlsoft.dot.dot.dot.dot.org> 