![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
VC9.0を使っているのですが、以下のような文を書くと
警告が出てしまいます。
int i = 100;
//warning C4305: '初期化中' : 'int' から 'bool' へ切り詰めます。
bool a = i;
この警告を出力させないために以下のようにすることに
問題はないでしょうか?
int i = 100;
bool a = static_cast<bool>(i);
このキャストを行うとき、iの値が0ならaはfalse,
iの値が0以外ならaはtrueとなることは保証されるのでしょうか?
よろしくお願いいたします。
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
横槍ですが...
> 処理系によってはboolの内部実装にunsigned charを使っていて、
> 256を入れるとオーバーフローして0になってしまうことがあるということでしょうか?
標準規格ができる前の古い処理系や、非標準処理系(つまり方言)の場合は何が起こっても不思議ではありません。
ちなみに、System.Bool云々の話はC++/CLI(これもある意味方言)と混同している可能性があるので鵜呑みにしないこと。
No.5
- 回答日時:
> デバッガで見てみましたが、256を入れてもtrueになりました。
boolって、unsigined charだったはずと思ってたけど、Visual C++ 2008 Express Editionで試したら、System.Boolに変換されてました。
だめですね、昔の知識で回答しちゃ。
すみません。わからない点があるので聞かせてください。
おっしゃられているのは、処理系によってはboolの内部実装にunsigned charを使っていて、
256を入れるとオーバーフローして0になってしまうことがあるということでしょうか?
これだと、bool型がもとからあるC++だと問題にはならないと思うのですが、
その認識であっていますでしょうか?
それとも、Cにおいてbool型をみかけ上作るために、
typdef unsigned int bool;
となっていることがたまにあり、その際にトラブルになるということでしょうか?
No.4
- 回答日時:
> iの値が0以外ならaはtrueとなることは保証されるのでしょうか?
保証されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- FX・外国為替取引 mql4のコンパイルエラー箇所の修正お願いします。 1 2023/03/15 16:14
- C言語・C++・C# 競技プログラミングに関する質問です。 3 2022/04/03 19:51
- Java Java 配列<選挙> 4 2023/07/31 15:07
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# このプログラミングの問題を教えて欲しいです。 キーボードから整数kを入力し、kが配列aの中に何個存在 2 2022/12/19 22:50
- C言語・C++・C# C言語 3 2022/10/04 15:07
このQ&Aを見た人はこんなQ&Aも見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
既定のコンストラクタがない?
C言語・C++・C#
-
C++にてtemplateで受け取った任意の型の変数が何型であるかを判定したい
C言語・C++・C#
-
正負を反転させて出力するプログラム
C言語・C++・C#
-
-
4
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
5
#if 1 #elseの意味について
C言語・C++・C#
-
6
python エラー
その他(プログラミング・Web制作)
-
7
CStringからchar*への型変換について教えてください。
C言語・C++・C#
-
8
visual C++ でビルドの中止ができません
C言語・C++・C#
-
9
fopenで別ディレクトリにファイルをオープンしたい
C言語・C++・C#
-
10
構造体のメンバをfor文で回したい
C言語・C++・C#
-
11
【gcc・cygwin】multiple definitionエラーの解決法
C言語・C++・C#
-
12
コンボボックスでデフォルト値の設定
C言語・C++・C#
-
13
1 つ以上の複数回定義されているシンボルが見つかりました
C言語・C++・C#
-
14
ファイル内のデータを1行削除する方法
C言語・C++・C#
-
15
C++言語で、構造体のコピーは可能(しても良い)のでしょうか?
C言語・C++・C#
-
16
2重定義って??
C言語・C++・C#
-
17
変数の前のビックリマークについて!
PHP
-
18
0除算して、落ちるプログラムと落ちないプログラム
C言語・C++・C#
-
19
構造体のextern方法
C言語・C++・C#
-
20
他の.CPPファイルに定義した関数を呼び出す方法について
C言語・C++・C#
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
visualstudio C# テキストボッ...
-
long型の定数の末尾にLを付ける...
-
プログラムの中で別のmainを呼...
-
C++のfor文について
-
関数の実体定義にヘッダファイ...
-
gccのエラー "initialization d...
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
C言語 宣言した変数になにも代...
-
typedef enumの使い方を教えて...
-
2重定義って??
-
main()とint main(void)の違い
-
C言語での方向キー入力判定
-
intとINTの違いは?
-
DLLのLPSTR 項目の戻り値の取得...
-
分割コンパイル時に構造体....
-
HINSTANCEの型
-
コンパイルすると error C1083 ...
-
変数の型を定義しなかった場合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DWORDの実際の型は何でしょうか
-
long型の定数の末尾にLを付ける...
-
2重定義って??
-
typedef enumの使い方を教えて...
-
visualstudio C# テキストボッ...
-
C++のfor文について
-
関数の実体定義にヘッダファイ...
-
構造体の要素すべてに対する四...
-
ハンドルされていない例外が発...
-
C++でboolにintの値を代入する...
-
変数の型を定義しなかった場合...
-
intとINTの違いは?
-
main.c:7:43: warning: implici...
-
void func( void )について
-
C言語 宣言した変数になにも代...
-
【#define】 defineで定義した...
-
構造体の宣言でエラーが出ます。
-
C言語での方向キー入力判定
-
プログラムの中で別のmainを呼...
-
C言語について質問です。 子プ...
おすすめ情報