printf関数の引数である'文字'がコンピュータのメモリに格納される際シングルクォーテーションで囲まれた'文字'内には半角英数字1文字のみ記入できます

ソーラー「


#include <stdio.h>


int main(void)


{

printf("%c\n", '1' );

return 0;

}


コンパイル結果

1


このプログラムでは


数値1をシングルクォーテーション' 'で囲って


文字データ1としてコンピュータのメモリに格納してから


%c出力変換指定子をもちいて


文字列データ"%c\n"の"%c部分に取り込み


コンパイル結果

1

を表示していました


このとき


シングルクォーテーション' '内には


半角英数字一文字しかいれてはいけませんというルールがあります


  🍋半角英数字一文字しかいれてはいけないところに🍋



ひらがな あ を このプログラムに取り込んでコンパイルすると


#include <stdio.h>


int main(void)


{

printf("%c", 'あ' );

return 0;

}


コンパイル結果(EAZY IDECの場合)


ファイル「C:/Users/solarplexus/AppData/Local/EasyIDEC/project/abcdefg/main.c」の


「6行目」で記述エラーを発見しました。


警告


multi-character character constant



ビルド結果(Visual Studioの場合)


ビルドは正常完了


プログラムを実行することができますが


コマンドプロンプト画面には何も表示されません。






それから


次のプログラムのように


#include <stdio.h>


int main(void)


{

printf("%c\n", '10' );

return 0;

}


' 'の中に   


      

 🍋半角英数字一文字しかいれてはいけないところに🍋



10をいれてみてコンパイルすると



コンパイル結果(EAZY IDECの場合)


ファイル「C:/Users/solarplexus/AppData/Local/EasyIDEC/project/abcdefg/main.c」の


「5行目」で記述エラーを発見しました。


警告


multi-character character constant


ビルド結果(Visual Studioの場合)


ビルドは正常完了


プログラムを実行することができますが


コマンドプロンプト画面には


0と表示され


正しく10が表示されません。




やっぱり半角英数字一文字しかいれてはいけないようです。


このmulti-character character constantがどうやら


それを意味しているみたいですね(^_^)/


constantとは定数という意味であり


定数とは ある一定の情報量をもったデータのことをあらわしています。


ええっと このメッセージの意味をわかりやすく翻訳すると


複数の文字で定数が構成されている となります。


わかりにくい・・・?


ひらがな あ は 実はコンピューターにとっては


半角英数字2文字分のデータで構成されています。


数値10も半角英数字2文字分にあたります。


ですので


半角英数字 1文字しか


シングルクォーテーションで囲まれた' 'の中に   


半角英数字 2文字分書き込んだため


複数の文字で定数が構成されている



コンパイルエラーが表示されたというわけです。


つまり 半角英数字 1文字しか打ち込んじゃだめということですね。」


ぶーにゃん 「 半角英数字1文字だけ。にゃお~~ん」



🌞

初学者のみなさま、たびたび先走ってすみません


これは char形式では半角英数字1文字だけしか


コンピュータのメモリに格納できないからなんです


このことについては 大分後のお話となります。


すみません

🌞



ぶーにゃん 「にゃーんも


プログラムをうちこんでみよっと(^^)


#include <stdio.h>


int main(void){


printf("%cと%cはやまへ芝刈りに%cと%cは川に


洗濯にいきました。" , '5' ,'7','8','7','1');


return 0;

}


コンパイル結果(EAZY IDECの場合)


5と7はやまへ芝刈りに8と7 は川に


洗濯にいきました。


さっきの%dのときと使い方はおなじにゃん。🐈



ソーラー「ビルド!」


ビルド結果(Visual Studioの場合)


重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態

エラー C2065 '洗濯にいきました。': 定義されていない識別子です。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7

エラー C2001 定数が 2 行目に続いています。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 5

エラー C2001 定数が 2 行目に続いています。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7

エラー C2146 構文エラー: ')' が、識別子 '洗濯にいきました。' の前に必要です。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7

エラー C2143 構文エラー: ';' が 'return' の前にありません。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 9

エラー C2143 構文エラー: ';' が '文字列' の前にありません。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7

エラー C2146 構文エラー: ';' が、識別子 '洗濯にいきました。' の前に必要です。 Project6 c:\users\solarplexuss\source\repos\project6\project6\source.cpp 7

エラー (アクティブ) E0008 終わり引用符がありません Project6 c:\Users\solarplexuss\source\repos\Project6\Project6\Source.cpp 5

エラー (アクティブ) E0008 終わり引用符がありません Project6 c:\Users\solarplexuss\source\repos\Project6\Project6\Source.cpp 7


Visual Studioではビルドエラーが表示されてうまくビルドできないね


いや むしろプログラマーにとって親切設計かな?」


てんC 「ぶーにゃんさん、


命令文


printf("%cと%cはやまへ芝刈りに%cと%c は川に


洗濯にいきました。 ", '5' ,'7','8','7','1');


で""で囲まれた左辺の%cは4個


 ,コンマの


右辺の文字データ

'5'

'7'

'8'

'7'

'1'


は5個で'1'の分だけを


うちすぎていますよ。」


ぶーにゃん 「にゃにゃっ。😺


うちすぎていたにゃん。


EAZY IDECでは」


無事にコンパイルできているけど・・・


やっぱり左の文字から%cに格納されているにゃん。(^^)」


  • Twitterで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る