- Community Home
- >
- HPE Community, Japan
- >
- HP-UX
- >
- HP-UX General
- >
- C言語でのdouble型への値代入動作がhpux10.20と11iv1で違う
HP-UX General
1822397
メンバー
2899
オンライン
109642
解決策
フォーラム
カテゴリ
Company
Local Language
戻る
フォーラム
ディスカッションボード
フォーラム
- Data Protection and Retention
- Entry Storage Systems
- Legacy
- Midrange and Enterprise Storage
- Storage Networking
- HPE Nimble Storage
ディスカッションボード
フォーラム
ディスカッションボード
ディスカッションボード
ディスカッションボード
フォーラム
ディスカッションボード
戻る
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
- BladeSystem Infrastructure and Application Solutions
- Appliance Servers
- Alpha Servers
- BackOffice Products
- Internet Products
- HPE 9000 and HPE e3000 Servers
- Networking
- Netservers
- Secure OS Software for Linux
- Server Management (Insight Manager 7)
- Windows Server 2003
- Operating System - Tru64 Unix
- ProLiant Deployment and Provisioning
- Linux-Based Community / Regional
- Microsoft System Center Integration
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
Discussion Boards
ブログ
コミュニティ言語
言語
フォーラム
ブログ
トピックオプション
- RSS フィードを購読する
- トピックを新着としてマーク
- トピックを既読としてマーク
- このトピックを現在のユーザーにフロートします
- ブックマーク
- 購読
- 印刷用ページ
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-02-2006 08:20 AM
08-02-2006 08:20 AM
C言語でのdouble型への値代入動作がhpux10.20と11iv1で違う
OS:HPUX11.iv1 Model:C8000 と
OS:HPUX10.20 Model:B2000 で
同じC言語プログラムをコンパイル後
実行すると動作が違うので調べました。
double fa;
fa=0x80000000;
printf("fa=0x80000000; %f \n",fa);
fa=-21474833648.0;
printf("fa=-21474833648.0; %f \n",fa);
の記述をc8000とb2000でそれぞれ
Cコンパイルして実行しました。
b2000の場合
fa=0x80000000; -2147483648.000000
fa=-21474833648.0; -21474833648.000000
c8000の場合
fa=0x80000000; 2147483648.000000
fa=-21474833648.0; -21474833648.000000
のようにc8000ではプラスの値になりました。
基本としてdouble型変数へ
0x80000000を代入すること自体
あいまいな記述なので
互換性が保障されないケースなのでしょうか???
OS:HPUX10.20 Model:B2000 で
同じC言語プログラムをコンパイル後
実行すると動作が違うので調べました。
double fa;
fa=0x80000000;
printf("fa=0x80000000; %f \n",fa);
fa=-21474833648.0;
printf("fa=-21474833648.0; %f \n",fa);
の記述をc8000とb2000でそれぞれ
Cコンパイルして実行しました。
b2000の場合
fa=0x80000000; -2147483648.000000
fa=-21474833648.0; -21474833648.000000
c8000の場合
fa=0x80000000; 2147483648.000000
fa=-21474833648.0; -21474833648.000000
のようにc8000ではプラスの値になりました。
基本としてdouble型変数へ
0x80000000を代入すること自体
あいまいな記述なので
互換性が保障されないケースなのでしょうか???
3件の返信3
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-03-2006 11:36 AM
08-03-2006 11:36 AM
C言語でのdouble型への値代入動作がhpux10.20と11iv1で違う
Cコンパイルなぞ、5年ぶりなので、ずれた回答を
しそうですが、cc なのか aCC なのか、どのような
コンパイルオプションを指定されたか、まずは、
コンパイル時のコマンド列をお教えください。
型変換を32ビットで行っているか、64bitで行っているか
の違いではあると思いますが、アセンブラに出して見れば
分かるのではと思っています。
しそうですが、cc なのか aCC なのか、どのような
コンパイルオプションを指定されたか、まずは、
コンパイル時のコマンド列をお教えください。
型変換を32ビットで行っているか、64bitで行っているか
の違いではあると思いますが、アセンブラに出して見れば
分かるのではと思っています。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-03-2006 12:15 PM
08-03-2006 12:15 PM
C言語でのdouble型への値代入動作がhpux10.20と11iv1で違う
ANSI-Cの定数の解釈の違いでしょう。
HP-UX11.11の上で、以下の様にコンパイルすればワーニングを出してくれます。
$ cc +M0 xx.c
cc: "xx.c", line 7: ANSI migration warning 706: Large unsuffixed integer constant will be type unsigned integer in ANSI mode.
これによれば、定数は"unsigned int"と解釈されているようですね。
もし、今までのように解釈させたいのであれば、
fa=(int)0x80000000;
とすればよいでしょう。
HP-UX11.11の上で、以下の様にコンパイルすればワーニングを出してくれます。
$ cc +M0 xx.c
cc: "xx.c", line 7: ANSI migration warning 706: Large unsuffixed integer constant will be type unsigned integer in ANSI mode.
これによれば、定数は"unsigned int"と解釈されているようですね。
もし、今までのように解釈させたいのであれば、
fa=(int)0x80000000;
とすればよいでしょう。
- 新着としてマーク
- ブックマーク
- 購読
- ミュート
- RSS フィードを購読する
- ハイライト
- 印刷
- 不適切なコンテンツを報告
08-04-2006 08:00 AM
08-04-2006 08:00 AM
C言語でのdouble型への値代入動作がhpux10.20と11iv1で違う
ご指摘の通りです。
hpux11.11になってから
K&R と ANSIC が統合されたようで
hpux10.20では何事も無く曖昧でも
それなりに適切解釈されたものが
compile errorやwarnningになって
混乱しています。
顧客にもCコンパイラのメッセージを
見せている為、当方が悪いような
印象をもたれて困惑しています。
hpux11.11になってから
K&R と ANSIC が統合されたようで
hpux10.20では何事も無く曖昧でも
それなりに適切解釈されたものが
compile errorやwarnningになって
混乱しています。
顧客にもCコンパイラのメッセージを
見せている為、当方が悪いような
印象をもたれて困惑しています。
上記の意見は、Hewlett Packard Enterpriseではなく、著者の個人的な意見です。 このサイトを使用することで、利用規約と参加規約に同意したことになります 。
企業情報
© Copyright 2025 Hewlett Packard Enterprise Development LP