• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:VC2005 ビルド時の警告内容)

VC2005 ビルド時の警告内容について

このQ&Aのポイント
  • C初心者の方がVC2005で配列のアドレスを表示しようとすると、警告が発生します。
  • 警告メッセージは「warning C4313: 'printf' : 書式文字列内の '%x' が引数 1 ('short [4]' 型) と競合しています」という内容です。
  • VC++6.0ではこの警告は発生しなかったようですが、VC++2005で読み取ります。解消する方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

アドレスを表示するときは "%p" を使ってください。

bad_star
質問者

お礼

ありがとうございます。解消されました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • ビルドが失敗してしまいます

    最近C言語を勉強を始めまして、参考書に載っていた以下のソースプログラムをvisualC++2010に打ち込んだのですがビルドが成功しません #include <stdio.h> #include <math.h> int main(void) { int d[33]; double m,v,s; int n=33; int i; double sum; printf("データを%d個入力してください\n",n); for(i=0;i<n;i++) { printf("date %d=",i+1); scanf_s("%d",&d[i]); } for(sum=0.0,i=0;i<n;i++) { sum+=d[i]; } m=sum/n; for(sum=0.0,i=0;i<n;i++) { sum+=(d[i]-m)*(d[i]-m); } v=sum/n; s=sqrt(v); printf("平均=%10.3f\n",m); printf("分数=%10.3f\n",v); printf("標準偏差=%10.3f\n",s); return 0; } エラーメッセージは ・'scanf' の宣言を確認してください。 ・(11): warning C4566: ユニバーサル文字名 '\u00A5' によって表示されている文字は、現在のコード ページ (932) で表示できません ・(14): warning C4566: ユニバーサル文字名 '\u00A5' によって表示されている文字は、現在のコード ページ (932) で表示できません ・(14): error C2065: 'i1' : 定義されていない識別子です。 と出るのですがさっぱりわかりません。どなたか教えてください。

  • デバッグビルドとリリースビルドで計算結果が違う

    こんにちは。 VC++.netで暗号化ソフトを作っているんですが、デバッグモードで実行した結果と、リリースモードで実行して得られる結果が違うので困っています。 原因としては、何が考えられるでしょうか? warningで、「warning C4267: '=' : 'size_t' から 'int' に変換しました。データが失われているかもしれません。」と表示されましたが、(int)でキャストしてから警告は出なくはなっているんですが。 もう一つ、「LINK : warning LNK4089: 'SHELL32.dll' へのすべての参照は /OPT:REF によって廃棄されます。」と出ていますが、これは関係なさそうですので無視しています。 もしかして、同じような経験をされた方がいるんではないかと思い質問しました。 よろしくお願いします。

  • 引数に二重配列のある関数について

    void calc(int *a,int b,int c){ a[0]=b+c; a[1]=b-c; } void main(void){ int x[2]; int y=2,z=5; calc(x,y,z); printf("x[0]=%d,x[1]=%d\n",x[0],x[1]); } 上のように引数が普通の配列の関数ならできるのですが, 引数が下のような多重配列になるとエラーが出てしまいできません。 void keisan(int **a,int b,int c){ a[0][0]=b+c; a[0][1]=b-c; a[1][0]=b*c; a[1][1]=b/c; } void main(void){ int x[2][2]; keisan(x,6,2); printf("x[0][0]=%d,x[0][1]=%d\n",x[0][0],x[0][1]); printf("x[1][0]=%d,x[1][1]=%d\n",x[1][0],x[1][1]); } 引数に多重配列を使った場合の関数の作り方について教えてください. お願いいたします.

  • VC++2005EEにて不可解な挙動

    int j = 0; for( ; ; ){  printf( "%d ", j ); } printf( "hoge \n" ); 上記コードを無限ループで回したところ、表示されるのは 0の羅列ではなくhogeの羅列でした。 このような状況ってありえるのでしょうか? 環境はVisualC++2005 ExpressEditionです。 また、なぜかコンパイル中に上記のforのところで warning C4127: 条件式が定数です。 という警告が出ていましたがなぜでしょうか。

  • VC++6.0のプロジェクトをVC++2005Expressで動かしたいがエラーが出まくってしまいます。

    VC++6.0のプロジェクトをVC++2005Expressで動かしたいのですが エラーが出まくってしまいます。 VC++6.0では正常にコンパイル終了するものがexpressだと、 ・・・string.h(135) : warning C4003: マクロ '__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1_EX' に指定された実引数の数が少なすぎます。 とか、 ・・・string.h(135) : error C2065: '_string' : 定義されていない識別子です。 とか、 ・・・string.h(135) : error C2275: '_locale_t' : この型は演算子として使用できません とかです。string.hなど、触ったこともないのですが、 express用に編集が必要なのでしょうか? ちなみに PlatformSDK などはインストールして、include,exectable,library ディレクトリなどのパスも通しています。 何か良い方法を教えてください。お願いします。

  • PlatformSDKのサンプル等のビルド

    DirectShowの機能を使おうと考え,Windows Server 2003 SP1 Platform SDKをインストールしました. BaseClassesのビルドを行ってstrmbasd.lib等を得るために,バッチファイルをもちいてnmakeコマンドによりビルドしたのですが,下記のようなエラーが出てしまい,ビルドができませんでした.他のサンプルも似たようなエラーが出てしまい,ビルドできません. 対処の仕方がわからず,困っております. C:\Program Files\Microsoft Platform SDK\Samples\Multimedia\DirectShow\BaseClasses\ctlutil.h(278):error C4430: 型指定子がありません C:\Program Files\Microsoft Platform SDK\Include\uuids.h:warning C4819: ファイルは,現在のコードページ(932)で表示できない文字を含んでいます. NMAKE:fatal error U1077: 'cl': return code '0x2'Stop ちなみに開発環境はOS:windowsXP sp2,Visual Studio 2005 Standardを使用しています. よろしくお願いします.

  • 配列のアドレス取得が出来ません(in MacOSX 10.6)。

    配列のアドレス取得が出来ません(in MacOSX 10.6)。 例えば、配列要素数3の一次元配列で、int hei[3] = {x, y, z};(xyzは整数)で初期化した配列 hei の、それぞれの要素のアドレスを取得しようと思い、 %x を使って、for 文で {printf("address: %x\n", &hei[i])} としてターミナルのコマンドからgccでコンパイルすると、"warning: format ‘%x’ expects type ‘unsigned int’, but argument 2 has type ‘int *’" とエラーが出てきてしまいます(配列が char 型でも double 型でも表示は同じです。'%x' は 'unsigned int' だから、と跳ねられます)。 これはどういう理由によりますでしょうか?ちなみに使っている教科書は、1993年が初版で2000年に増補改訂された「入門 ANSI-C」という実教から出ているものです。簡単な質問で申し訳ありませんがよろしくお願いします。

  • VC++でcl.exeの実行エラー

    VC++6.0でビルドを行うとwarningはありますが、エラーは出てない状態で「cl.exeの実行エラー」と表示されビルドできません。どのような原因が考えられますか? 心あたりのある方、是非教えてください。

  • GCCで暗黙の型変換の警告を出したい

    情報が失われてしまうような代入について警告を出したいのですが、 どういったオプションを用いればよいでしょうか? コンパイラはGCCの3.x系か4.x系でお願いします。 以下のようなソースで型変換に関する警告がほしいんです。 --- test.c --- #include <stdio.h> int main(void) {   int a = 66000;   short b;   b = a; // <- 暗黙の型変換   printf("%d\n", b);   return 0; } 実行結果 $ ./test 464 以下のオプションを試しましたが、上記のソースでは 何の警告も出ませんでした。 -W -Wall -Wconversion -Wimplicit ご存知の方いらっしゃいましたら、どうかお助け下さい。

  • VC++.NETのビルドエラーについて

    未経験で入社し、現在自習中のプログラマ見習いです。 ビルドエラーについて、解決の糸口を 教えていただけないでしょうか。 「Visual C++(1)はじめてのWindowsプログラミング」 山本信雄著の内容通り、サンプルプログラムを 入力しビルドしようとするとエラーとなりました。 APIのみを使って、「何もしない」空のウインドウを 出すだけのプログラムです。 二件あり、ひとつはウインドウクラス構造体の メンバの一つで、 C2039: 'hIcomSm' : 'tagWNDCLASSEXA' のメンバではありません。 という内容です。 もう一件が、アプリケーション終了の際にWinMainの 戻り値となるwParamメンバ(MSG構造体)です。 C4244: 'return' : 'WPARAM' から 'int' に変換しました。データが失われているかもしれません。 本通りに記述したつもりなのですが、エラーに なりました。環境がVC++6.0ではなく.NETであることと 関係するのか、単なる記述ミスなのか、判断できません。 どなたかヒントを頂けないでしょうか。 よろしくお願いします。

このQ&Aのポイント
  • TF710KAWのクロームが繰り返し停止する問題についての解決策を教えてください。
  • 私はTF710KAWを使用していますが、クロームが繰り返し停止する問題が発生しています。キャッシュの削除や自動アップデートの設定変更を試しましたが、改善されません。データ使用量も高いため、解決策を教えてください。
  • TF710KAWのクロームが繰り返し停止する問題の解決策を教えてください。キャッシュの削除や自動アップデートの設定変更を試しましたが、問題が解決しません。データ使用量も高くなっており、どうすれば改善できるでしょうか?
回答を見る