C言語のキャストについての質問です。
型の変換だと聞いたのですが、
文字列から数値へ変換しています。
これをキャストと呼ぶのでしょうか?
C言語のキャストについて
Re: C言語のキャストについて
言葉としての意味なのか、プログラム用語としてなのかで変わる気がします。
言葉の意味で考えると、変換を行うのでキャストですが、
プログラム的な意味では、タイプキャストではないので、違うと思います。
言葉の意味で考えると、変換を行うのでキャストですが、
プログラム的な意味では、タイプキャストではないので、違うと思います。
Re: C言語のキャストについて
これはC言語としては不正なコードです。
C++の間違いではないですか?Nior さんが書きました:C言語のキャストについての質問です。
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: C言語のキャストについて
ご意見ありがとうございます。
具体的な例が余計だったでしょうかね。
C言語(C++でもいいです)のキャストをする事によって、メモリの値が書き換わる事がありますか?
という質問です。
具体的な例が余計だったでしょうかね。
C言語(C++でもいいです)のキャストをする事によって、メモリの値が書き換わる事がありますか?
という質問です。
Re: C言語のキャストについて
先に、気になった点。
(これはキャストですか?→キャストしたらメモリ書き換わりますか?)
[hr]
変換した結果を得るために、キャストしているので
結果が格納されるメモリは、もちろん書き換わるでしょう。
基本的には、キャストによって、キャスト元のメモリは書き換わりませんが
キャストの結果を受け取るメモリは、書き換わると考えれば良いと思います。
ただ、少なくとも初めに提示しているコードは、キャストではなく関数から値を取得しているだけなので、
やはり、質問内容が見えてこないです。
質問内容が変わっていませんか?Nior さんが書きました: C言語(C++でもいいです)のキャストをする事によって、メモリの値が書き換わる事がありますか?
という質問です。
(これはキャストですか?→キャストしたらメモリ書き換わりますか?)
[hr]
C++であれば、Nior さんが書きました: C言語(C++でもいいです)のキャストをする事によって、メモリの値が書き換わる事がありますか?
という質問です。
変換した結果を得るために、キャストしているので
結果が格納されるメモリは、もちろん書き換わるでしょう。
基本的には、キャストによって、キャスト元のメモリは書き換わりませんが
キャストの結果を受け取るメモリは、書き換わると考えれば良いと思います。
ただ、少なくとも初めに提示しているコードは、キャストではなく関数から値を取得しているだけなので、
やはり、質問内容が見えてこないです。
Re: C言語のキャストについて
「キャストをする」の定義が「キャスト演算子を使う」だとすると、Nior さんが書きました:C言語(C++でもいいです)のキャストをする事によって、メモリの値が書き換わる事がありますか?
C++でオーバーロードされたキャスト演算子を使うことで、メモリの値が書き換わることはあります。
(そのようなコードはあまり良くないと思いますが)
#include <iostream>
struct hoge {
int a;
// キャスト演算子のオーバーロード
operator double() {
return ++a;
}
};
// レジスタや即値ではなくメモリを使ってくれる可能性を上げるため、staticでないグローバル変数にする
hoge test;
int main(void) {
test.a = 0;
// 現在の値を表示する
std::cout << "test.a = " << test.a << '\n';
// キャスト演算子を使う
(double)test;
// メモリの値が書き換わっていることを確認する
std::cout << "test.a = " << test.a << '\n';
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)