ここにコードがあります -
1 int main(int argc, char *argv[])
2 {
3 signed char S, *psc;
4 unsigned char U, *pusc;
5 char C, *pc;
6
7 C = S;
8 C = U;
9
10 pc = psc;
11 pc = pusc;
12
13 return 0;
14 }
$ gcc test.cpp -o a
test.cpp: In function ‘int main(int, char**)’:
test.cpp:10:7: error: invalid conversion from ‘signed char*’ to ‘char*’ [-fpermissive]
test.cpp:11:7: error: invalid conversion from ‘unsigned char*’ to ‘char*’ [-fpermissive]
これは、Intel 32 ビット マシン上の Ubuntu 12.10 の gcc バージョン 4.6.3 でコンパイルされます。
char
そのタイプがunsigned char
x86にあることを考慮してください。-
ポインター以外の型に対する 7 行目と 8 行目の割り当てが OK の場合、10 行目と 11 行目のポインター型でエラーがスローされるのはなぜですか?
また、C = U
キャストを必要とせずに成功する必要がありますか?