PG_kura 2012-08-16 15:40:56

[C] short から int への変換 このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

バグってるのはコンパイラじゃなくて開発者のアタマである。

void x2(int* pData)
{
  *pData = *pData * 2;
}
 
int main()
{
  // 最後の 0 が無いと強制終了になる。
  // コンパイラのバグと思われる。
  short data[] = { 100, 200, 300, 400, 500, 0 };
 
  for(int i = 0; i < 5; ++ i) {
 
    short* pData = &data[i];
 
    // short から int へのキャストなので絶対安全
    x2((int*) pData);
 
    printf("%d ", *pData);
  }
 
  return 0;
}

使い方ヒント: 「これは臭う」という行を見付けたら、各行のsmellをクリックしてマーキングしておきましょう(要Twitter OAuth認証)

コメント(12)

#1 HarpoonArrow 2012-08-16 15:54:26  

その自信はいったいどこから来るのか… そしてどこから突っ込めばいいのか…

#2 math_neko 2012-08-16 16:06:51  

ポインタとは何なのかについて小一時間説教したい

#3 DsYochibe 2012-08-16 16:36:01  

printfの結果で気づかなかったのだろうか

#4 customX_156 2012-08-16 18:06:57  

ひとのせいにしないで欲しい

#6 PG_kura 2012-08-17 04:14:21  

処理系に依るので場合によっては動いているように見えるのです。

#7 getpow 2012-08-17 08:47:48  

書いたのってキャリアどれくらいの人なのかな・・・

#8 math_neko 2012-08-17 17:22:28  

ウチの環境でも試してみましたが出力結果すら処理系依存ですね…実に香しい。

#9 BeldenDrive 2012-08-18 12:34:27  

こういうことをしてしまう人は、往々にして、「デバッグビルドだと通るのに、リリースビルドだと落ちるですう」 って頭抱えてる人だねぇ。

#10 maroni_chang 2012-08-22 05:15:27  

う、うんこだああああああああああ

#11 hotwatermorning 2012-08-23 01:51:35  

「コンパイラのバグと思われる。」( ー`дー´)キリッ

#12 tomorum 2012-09-13 13:24:20  

i=1を実行した時点でアライメントエラーになる気がするが、Windowsは平気なのかな

コメント投稿には、twitter認証が必要です。

Twitter認証

このウンコードに臭った人は、こちらのウンコードにも臭ってます

[その他] HOW TO ABC..

このエントリーをはてなブックマークに追加

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »

[C] すげーちゃんと動く!

このエントリーをはてなブックマークに追加

結合試験2日前に脱退したうんkプログラマ...

return 0;

鑑賞する »

[C] NULL と 8 の何故

このエントリーをはてなブックマークに追加

テストは通ってるけど、教科書からやり直し...

#define TO_STRING(n, str) \
  if(n != N...

鑑賞する »