2017-03-15 6 views
0

データ型を変更せずに警告をcharに出力したいのですが、これは、警告を生成 データ型を変更せずに警告を取り消したい場合

#include<stdio.h> 
#include<stdlib.h> 
main() 
{ 
    unsigned char ch; 
    printf("Hello This is Problematic\n"); 
    scanf("%d",&ch); 
    printf("1\n"); 
} 

test.cの:7:2:警告:フォーマット '%dは' 型の引数 'INT *' が、引数2「unsigned char型を入力した期待* '[-Wformat =] scanf( "%d"、& ch);

+0

達成しようとしていることは何ですか?これはプログラムの重大なバグに関する警告です。あなたのプログラムの全体的な動作は未定義です。 – StoryTeller

+1

'%d' - >' '%hhu" 'または'%c'、 'main()' - > 'int main(void)' – BLUEPIXY

+0

scanfをintにして長さをチェックしてcharにコピーする –

答えて

2

供給引数は変換指定子の正しいタイプではありませんよう実は、

scanf("%d",&ch); 

undefined behaviorを使用してプログラムを残します。あなたはC11、§7.21.6.2

hh

は、指定の章を引用

scanf("%hhu",&ch); 

記述する必要があること、次のdiouxX、またはn変換指定タイプポインタがsigned charまたはの引数に を適用します。。

関連する問題