0

私はプログラムを持っていて、その中に Q=pow(2.0,32) を入れました Windows7の32ビットシステムを搭載したコンピューターでこのプログラムを実行すると動作しますが、64ビットシステムを搭載したコンピューターにコピーするとビット システム windowsxp Q=0 が表示されます。何が問題なのですか? Q は long long int です

4

2 に答える 2

1

それが0だとどうしてわかるの?Q

のようなものを使用して印刷している場合はprintf("%lld\n", Q);、Microsoft の C ランタイム ライブラリの欠陥に遭遇している可能性があります。C99 に対する Microsoft のサポートは最小限であり、その形式をサポートしていない可能性があり"%lld"ます (彼らのコンパイラが許可していることに驚いていますlong long int)。

の値を出力するだけでなく、0と比較 してみてください。QQ

printf("Q = %lld\n", Q);
if (Q == 0) {
    puts("Q == 0");
}
else {
    puts("Q != 0");
}

サポートされているlong long int値を出力する方法については、Microsoft のドキュメントを参照してください。

于 2013-01-21T18:47:15.593 に答える
0
    #include<stdio.h>
    #include<stdlib.h>
    #include<math.h>
    #include "highgui.h"
    int main()
    {
    long long int Q;
    Q=pow(2.0,32);
    printf("%lld\n",Q);
    printf("%lld\n",LONG_LONG_MAX); return 0; 
    }
于 2013-01-22T09:55:50.193 に答える