switch statement with variable branches

Stefan Koch via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jan 19 00:48:17 PST 2017


On Thursday, 19 January 2017 at 01:22:56 UTC, Yuxuan Shui wrote:
> Somehow I can't use ubyte variables behind 'case', but ulong 
> works fine. Why is that?
>
> void main() {
> 	alias TestType = ulong; // won't compile if = ubyte
> 	import std.stdio;
> 	TestType a,b,c;
> 	readf("%s %s %s ", &a, &b, &c);
> 	switch(c){
> 		case a: writeln("a");break;
> 		case b: writeln("b");break;
> 		default: assert(false);
> 	}
> }

It is a bug that this code compiled.
Case Variables can only be used on const values, to prevent 
mutation of them inside the switch itself.

try to make the type a const ubyte.


More information about the Digitalmars-d-learn mailing list