#6843: 為何 C++ 通過,C 就不行?


jdh8 (硬邦邦)


我寫了一段 C 程式碼,自己用 gcc-4.7.0 編譯通過了,執行也沒問題。
結果送到這裡,選 C 語言送出,結果三個測資點都陣亡:「執行時期未定義錯誤,code = 5 」
一樣的程式碼,改選 C++ 就 AC 了。程式碼如下:

#include <stdio.h>

int powmod(int a, int b) {
  int bin=1, i, res=1, tmp=a%10007;

  for(i=0; i<32; i++) {
    if(b & bin)
      res = res * tmp % 10007;
    bin <<= 1;
    tmp = tmp * tmp % 10007;
  }
  return res;
}

int main() {
  int a, b;
  scanf("%d %d", &a, &b);
  printf("%d\n", powmod(a, b));
}

在自家機器的執行結果如下,其中 2 和 31 是程式執行後我再輸入的:
輸入 2 31,輸出 1462

#6844: Re:為何 C++ 通過,C 就不行?


s111110111 (山口)


int main() {

  int a, b;
  scanf("%d %d", &a, &b);
  printf("%d\n", powmod(a, b));
}

加上 return 0; 就可以送 ansi C 了
#6845: Re:為何 C++ 通過,C 就不行?


jdh8 (硬邦邦)


多謝提醒!

AC (0ms, 286KB)