You did ask "in C/C++", so you did allow the C++ answers ...
A variable of type integer can hold a value that is in range [INT_MIN..INT_MAX]
A variable of type char can hold a value that is in range [CHAR_MIN..CHAR_MAX]
The first range is much larger than the first.
The '-' is a single character, but its numeric value (if ASCII coding base-10 is used) has more than one digit.
You have to be more specific about what you mean by "copy to array".