Thank you!
jfondren
julian.fondren at gmail.com
Tue Sep 7 05:09:39 UTC 2021
On Tuesday, 7 September 2021 at 05:01:30 UTC, Tejas wrote:
> This reminds me of single length string literals being treated
> as a character.
>
> ```d
> void main(){
> char[5] a = "y";//shouldn't compile, but it does
> char[5] b = 'y';
> writeln(a);
> writeln(b);
> }
>
>
> Output:
> y
> yyyyy
> ```
>
> Was it a good thing that the compiler rewrote the string into a
> char in this case? Wouldn't it be better if an error/warning
> was provided instead?
This example works with a initialized to "yy" as well, or "yyxx".
The chars not provided are initialized to 0 (rather than 255 if
the variable weren't initialized at all). This seems like a nice
way to reuse a large fixed buffer that initially has small
relevant content, like `char[255] line = "hello";`
It doesn't initialize the entire array to 'y', so it's not
treating "y" as the same as 'y'.
More information about the Digitalmars-d
mailing list