型変換int→double
Posted: 2010年11月08日(月) 00:27
はじめまして、坂峰という者です。
今回は、C言語の型変換について分からない所があったので、質問しました。
開発環境は Visual C++ 2008
開発言語 C言語
OS windows XP
ベクトルの足し算をするためにDrawLine関数を使って斜めの線を
ベクトルで表示させる処理をしました。
すると、エラーではないのですが、警告メッセージが表示されました。
内容は
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
エラー 0、警告 4
doubleからintへの変換 とあったので、
(double)とやって、double型に変換しました。
すると、同じ内容の警告が表示されてしまいました。
どうすれば、double型にできるのでしょうか?
#include "DxLib.h"
#include<stdio.h>
//構造体
struct point{
double x,y;
};
//関数マクロ
point sum(point a , point b);
char Key[256];
//メインプログラム//
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理
SetDrawScreen( DX_SCREEN_BACK ); //裏画面に設定
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない
/*プログラムの開始*/
point a;
point b;
a.x=100.0;
a.y=10.0;
b.x=40.61;
b.y=30.51;
point ans = sum(a,b);
DrawFormatString( 0 , 0 , GetColor(255,255,255),"%f%f" , ans.x , ans.y);
DrawLine( (double)a.x , (double)a.y , (double)b.x , (double)b.y , GetColor(255,255,255));
//プログラムの終了
ScreenFlip();//裏画面を表画面に反映
}
DxLib_End();
return 0;
}
point sum(point a,point b){
point c;
c.x = a.x+b.x;
c.y = a.y+b.y;
return c;
}
今回は、C言語の型変換について分からない所があったので、質問しました。
開発環境は Visual C++ 2008
開発言語 C言語
OS windows XP
ベクトルの足し算をするためにDrawLine関数を使って斜めの線を
ベクトルで表示させる処理をしました。
すると、エラーではないのですが、警告メッセージが表示されました。
内容は
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
warning C4244: '引数' : 'double' から 'int' への変換です。データが失われる可能性があります。
エラー 0、警告 4
doubleからintへの変換 とあったので、
(double)とやって、double型に変換しました。
すると、同じ内容の警告が表示されてしまいました。
どうすれば、double型にできるのでしょうか?
#include "DxLib.h"
#include<stdio.h>
//構造体
struct point{
double x,y;
};
//関数マクロ
point sum(point a , point b);
char Key[256];
//メインプログラム//
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //初期化処理
SetDrawScreen( DX_SCREEN_BACK ); //裏画面に設定
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
//↑メッセージ処理 ↑画面をクリア ↑キーボード入力状態取得 ↑ESCが押されていない
/*プログラムの開始*/
point a;
point b;
a.x=100.0;
a.y=10.0;
b.x=40.61;
b.y=30.51;
point ans = sum(a,b);
DrawFormatString( 0 , 0 , GetColor(255,255,255),"%f%f" , ans.x , ans.y);
DrawLine( (double)a.x , (double)a.y , (double)b.x , (double)b.y , GetColor(255,255,255));
//プログラムの終了
ScreenFlip();//裏画面を表画面に反映
}
DxLib_End();
return 0;
}
point sum(point a,point b){
point c;
c.x = a.x+b.x;
c.y = a.y+b.y;
return c;
}