Thread overview | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
August 21, 2003 bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
is this a compiler bug ? v0.69 win32 int main( char[][] args ) { bit dostuff; if ( dostuff = (args.length > 2) ) { return 0; } return 1; } //bit_test.d(4): '=' does not give a boolean result after all the bit is bool postings etc, I would have expected to be able to write the above code and not if ( (dostuff = (args.length > 2)) == true ) { return 0; } |
August 21, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Wynn | This is not about bit types, but more about disallowing '=' as the operator for a boolean test, due to it being usually a typo for '=='. "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bi1me1$1n9p$1@digitaldaemon.com... > is this a compiler bug ? v0.69 win32 > > int main( char[][] args ) { > bit dostuff; > if ( dostuff = (args.length > 2) ) { > return 0; > } > return 1; > } > > //bit_test.d(4): '=' does not give a boolean result > > after all the bit is bool postings etc, I would have expected to be able to > write the above code > and not > if ( (dostuff = (args.length > 2)) == true ) { > return 0; > } > > |
August 21, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Walter | On Wed, 20 Aug 2003 23:21:09 -0700 (08/21/03 16:21:09) , Walter <walter@digitalmars.com> wrote: > This is not about bit types, but more about disallowing '=' as the operator > for a boolean test, due to it being usually a typo for '=='. > > > "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message > news:bi1me1$1n9p$1@digitaldaemon.com... >> is this a compiler bug ? v0.69 win32 >> >> int main( char[][] args ) { >> bit dostuff; >> if ( dostuff = (args.length > 2) ) { >> return 0; >> } >> return 1; >> } >> >> //bit_test.d(4): '=' does not give a boolean result >> >> after all the bit is bool postings etc, I would have expected to be able > to >> write the above code >> and not >> if ( (dostuff = (args.length > 2)) == true ) { >> return 0; >> } Or maybe .. int main( char[][] args ) { bit dostuff; if ( dostuff = (args.length > 2), dostuff ) { return 0; } return 1; } -- Derek |
August 21, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Derek Parnell | "Derek Parnell" <derek.parnell@no.spam> wrote in message news:oprt8s4jv759ej19@news.digitalmars.com... > On Wed, 20 Aug 2003 23:21:09 -0700 (08/21/03 16:21:09) > , Walter <walter@digitalmars.com> wrote: > > > This is not about bit types, but more about disallowing '=' as the > > operator > > for a boolean test, due to it being usually a typo for '=='. > > > > > > "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bi1me1$1n9p$1@digitaldaemon.com... > >> is this a compiler bug ? v0.69 win32 > >> > >> int main( char[][] args ) { > >> bit dostuff; > >> if ( dostuff = (args.length > 2) ) { > >> return 0; > >> } > >> return 1; > >> } > >> > >> //bit_test.d(4): '=' does not give a boolean result > >> > >> after all the bit is bool postings etc, I would have expected to be able > > to > >> write the above code > >> and not > >> if ( (dostuff = (args.length > 2)) == true ) { > >> return 0; > >> } > > Or maybe .. > > int main( char[][] args ) { > bit dostuff; > if ( dostuff = (args.length > 2), dostuff ) { > return 0; > } > return 1; > } > I personally hate that form, like that it does not look too bad, but i've seen some "wonderful" uses of comma operator in if's in the past. |
August 21, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Mike Wynn | > > > This is not about bit types, but more about disallowing '=' as the
> > > operator
> > > for a boolean test, due to it being usually a typo for '=='.
> > >
> > >
> > > "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bi1me1$1n9p$1@digitaldaemon.com...
> > >> is this a compiler bug ? v0.69 win32
> > >>
> > >> int main( char[][] args ) {
> > >> bit dostuff;
> > >> if ( dostuff = (args.length > 2) ) {
> > >> return 0;
> > >> }
> > >> return 1;
> > >> }
> > >>
> > >> //bit_test.d(4): '=' does not give a boolean result
> > >>
> > >> after all the bit is bool postings etc, I would have expected to be
> able
> > > to
> > >> write the above code
> > >> and not
> > >> if ( (dostuff = (args.length > 2)) == true ) {
> > >> return 0;
> > >> }
> >
> > Or maybe ..
> >
> > int main( char[][] args ) {
> > bit dostuff;
> > if ( dostuff = (args.length > 2), dostuff ) {
> > return 0;
> > }
> > return 1;
> > }
> >
> I personally hate that form, like that it does not look too bad, but i've seen some "wonderful" uses of comma operator in if's in the past.
>
>
Maybe we should extend if (and also while) such to allows the
following syntax (similar to for):
if (declaration; condition)
{
}
Otherwise yo can always do
{
declarations;
if (condition)
{
}
}
|
August 21, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Philippe Mori | On Thu, 21 Aug 2003 10:01:43 -0400 (08/22/03 00:01:43) , Philippe Mori <philippe_mori@hotmail.com> wrote: >> > > This is not about bit types, but more about disallowing '=' as the >> > > operator >> > > for a boolean test, due to it being usually a typo for '=='. >> > > >> > > >> > > "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message >> > > news:bi1me1$1n9p$1@digitaldaemon.com... >> > >> is this a compiler bug ? v0.69 win32 >> > >> >> > >> int main( char[][] args ) { >> > >> bit dostuff; >> > >> if ( dostuff = (args.length > 2) ) { >> > >> return 0; >> > >> } >> > >> return 1; >> > >> } >> > >> >> > >> //bit_test.d(4): '=' does not give a boolean result >> > >> >> > >> after all the bit is bool postings etc, I would have expected to be >> able >> > > to >> > >> write the above code >> > >> and not >> > >> if ( (dostuff = (args.length > 2)) == true ) { >> > >> return 0; >> > >> } >> > >> > Or maybe .. >> > >> > int main( char[][] args ) { >> > bit dostuff; >> > if ( dostuff = (args.length > 2), dostuff ) { >> > return 0; >> > } >> > return 1; >> > } >> > >> I personally hate that form, like that it does not look too bad, but i've >> seen some "wonderful" uses of comma operator in if's in the past. >> >> > > Maybe we should extend if (and also while) such to allows the > following syntax (similar to for): > > if (declaration; condition) > { > } > > Otherwise yo can always do > > { > declarations; > if (condition) > { > } > } > > > Possibly, but I was thinking more along the lines of this ... As the form if ( <EXPRESSION> ) is valid then it might be just simple enough to do ... if ( (a = b) ) in other words, if the assignment expression is enclosed in its own parenthesis, it is considered to be a simple single-term expression, which does provided a valid boolean result. -- Derek |
August 22, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Philippe Mori | "Philippe Mori" <philippe_mori@hotmail.com> wrote in message news:bi2j25$31bd$1@digitaldaemon.com... > > > > This is not about bit types, but more about disallowing '=' as the > > > > operator > > > > for a boolean test, due to it being usually a typo for '=='. > > > > > > > > > > > > "Mike Wynn" <mike.wynn@l8night.co.uk> wrote in message news:bi1me1$1n9p$1@digitaldaemon.com... > > > >> is this a compiler bug ? v0.69 win32 > > > >> > > > >> int main( char[][] args ) { > > > >> bit dostuff; > > > >> if ( dostuff = (args.length > 2) ) { > > > >> return 0; > > > >> } > > > >> return 1; > > > >> } > > > >> > > > >> //bit_test.d(4): '=' does not give a boolean result > > > >> > > > >> after all the bit is bool postings etc, I would have expected to be > > able > > > > to > > > >> write the above code > > > >> and not > > > >> if ( (dostuff = (args.length > 2)) == true ) { > > > >> return 0; > > > >> } > > > > > > Or maybe .. > > > > > > int main( char[][] args ) { > > > bit dostuff; > > > if ( dostuff = (args.length > 2), dostuff ) { > > > return 0; > > > } > > > return 1; > > > } > > > > > I personally hate that form, like that it does not look too bad, but i've > > seen some "wonderful" uses of comma operator in if's in the past. > > > Maybe we should extend if (and also while) such to allows the > following syntax (similar to for): > > if (declaration; condition) > { > } > > Otherwise yo can always do > > { > declarations; > if (condition) > { > } > } > and how exactly is that better (or different) from if ( expr, var ) { .... } and for IS an extended while! my complaint was if ( bit_assign ) is an error I agree `if ( object_assign ) ...` or `if ( int_assign ) ...` are not `if ( boolean )` and thus an error (or potential error. |
August 29, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Philippe Mori | > Maybe we should extend if (and also while) such to allows the > following syntax (similar to for): > > if (declaration; condition) > { > } Wow, I thought it did support this! It must do. > Otherwise yo can always do > > { > declarations; > if (condition) > { > } > } This is the ugly C++ workaround, but not good enough for D, methinks. Another imperfection in C++ is the fact that you can declare variables of only one type in a for statement. We would like to be able to do the following in D: for(int i = 0, j, k = 0, long l = 0, m, n = 0; ...) { } // i, j, k, l, m, n all cease to exist here Walter, does this present any serious problem for the parser? (I'm assuming it'd be a breeze for a man of your talent.) |
September 12, 2003 Re: bit expression is not a boolean ?? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthew Wilson | "Matthew Wilson" <matthew@stlsoft.org> wrote in message news:biojkj$ah0$1@digitaldaemon.com... > > Maybe we should extend if (and also while) such to allows the > > following syntax (similar to for): > > > > if (declaration; condition) > > { > > } > > Wow, I thought it did support this! Nope. > It must do. Why? > > Otherwise yo can always do > > > > { > > declarations; > > if (condition) > > { > > } > > } > > This is the ugly C++ workaround, but not good enough for D, methinks. > > Another imperfection in C++ is the fact that you can declare variables of only one type in a for statement. > > We would like to be able to do the following in D: > > for(int i = 0, j, k = 0, long l = 0, m, n = 0; ...) > { > > } // i, j, k, l, m, n all cease to exist here > > Walter, does this present any serious problem for the parser? (I'm assuming > it'd be a breeze for a man of your talent.) There are some ambiguity problems using typedef'd names after the ,. |
Copyright © 1999-2021 by the D Language Foundation