【初心者歓迎】C/C++室 Ver.16【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0391385
2005/04/23(土) 19:25:28調べてきた。
ttp://www-ccs.ucsd.edu/c/express.html ("array lvalue expression")
ttp://www.kuzbass.ru/docs/isocpp/conv.html#conv.array
配列からポインターへの変換が、
Cでは配列型の左辺値のみに起こり、
C++では右辺値でも起こることになってるみたい。
ここで itostr の戻り値は右辺値なので、可変長引数の領域には
Cでは char [20] がまるごとコピーされて格納され、
C++では char* が格納されることになる。
gcc で警告されたのも納得できる。
それぞれのアセンブリ出力も取ってみたが、
この違いを反映したものになった。
■ このスレッドは過去ログ倉庫に格納されています