I have came across a piece of code making the following initialization:

```
static const uint8_t s[] = {"Some string"};

```

I would expect it to be interpreted as follows: The right side is matching an array of char pointers with single element which points to a string literal "Some string". While the left part is an array of `uint8_t`. Then the behavior I would expect is that the first element of `s` to receive some truncated value of the pointer to the string literal, thus causing unexpected behavior in the following code, assuming `s` is a string.

I've made the following test code:

```
#include <stdint.h>
#include <stdio.h>

static const uint8_t s1[] = "String1";
static const uint8_t s2[] = { "String2" };
int main(void){

    printf("%p, %p\n", s1, s2);
    printf("%s, %s\n", s1, s2);

    return 0;
}

```

For my surprise it seems that it is not happening. Not only the code will work correctly, but also the disassembly shows that both `s1` and `s2` are initialize as the corresponding strings in identical way.

Is this something `gcc` specific? Is C syntax permitting taking the single string literal into `{}` and still interpret it as a string literal?