質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

2857閲覧

int()と(int)の違い

kokorin

総合スコア73

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

2クリップ

投稿2019/05/11 08:20

C++のプログラムの中で、double x = 1.5などの浮動小数点数をint型などに変換するとき、関数(?)としてのint(x)と、キャストとしての(int)xが使えるのですが、両者に違いはありますか?
また、どちらを使ったほうがよいのでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

こんにちは。

int()は関数スタイルキャスト、(int)はCスタイルキャストと呼ばれています。
どちらもできるだけ使わない方がよいです。(必要な時は使いますが、特に後者が必要になるケースはほぼないらしいです。)
C++にはstatic_cast, dynamic_cast, const_cast, reinterpret_castが追加されていますので、なるべくこれらを使った方がバグの発生可能性を低減できます。

投稿2019/05/11 09:34

Chironian

総合スコア23274

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kokorin

2019/05/12 02:07

C++にはキャストに色々な種類があるんですね。 バグを生まないためにそれらを使うのはなるほどと思いました 回答ありがとうございました!
guest

0

データ型(式)というキャストはC++の拡張です。違いはないと思います・・・どちらか? ではなくソースで統一すればいいのだと思います。わたしはstatic_cast<型名>(変数);をよく使いますが。
参考:C++キャスト

投稿2019/05/11 09:00

編集2019/05/11 09:03
cateye

総合スコア6851

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kokorin

2019/05/12 01:55

どちらにも違いはないのですね、知りませんでした 回答ありがとうございました!
guest

0

... 浮動小数点数をint型などに変換 ...

キャストせずに単純に代入してやれば十分です。
いずれにせよ、float の値が int で扱える範囲外の場合を考慮するのをわすれないようにすべきです。

a.c

c

1#include <stdio.h> 2#include <limits.h> 3 4int main(void) { 5 float f = 1.5; 6 int i = f; 7 8 printf("%d\n", i); 9 10 f = INT_MAX + 1.0; 11 i = f; 12 printf(" : %f\n", f); 13 printf("(int): %d\n", (int)f); 14 printf("int: %d\n", i); 15}

実行例
イメージ説明

投稿2019/05/11 10:02

katoy

総合スコア22328

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問