質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

3回答

1492閲覧

getchar()について

退会済みユーザー

退会済みユーザー

総合スコア0

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2021/09/07 02:43

編集2021/09/07 04:07

以下の文は入力した文字を大文字または、小文字に変換されます。
なぜですか?
またchに代入しているgetchar()は引き算など行ったとして返り値は何になるんですか?

コード

#include <stdio.h>

int mani(){
char ch;
while((ch = getchar()) != EOF ){
if(ch >= 97 && ch <= 122){
printf("%c",ch-32);
}else if(ch >= 65 && ch <= 90){
printf("%c",ch+32);
}
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/09/07 02:48

(そのコードをどこから引っ張ってきたのかわかりませんが,その場所に相応の説明は無いんですかね?)
Zuishin

2021/09/07 03:05 編集

> 32を引けば大文字、32を引けば小文字になる理由がわかりません。 これは驚いた。 足し算と引き算の区別も計算もできない人か。 97 - 32 = 65
SaitoAtsushi

2021/09/07 05:43

Qiita にも同様の投稿をしていますね? https://qiita.com/dekopinvar1/questions/a26556438f25d9bad679 Teratail ではマルチポストは推奨されません。 https://teratail.com/help#posted-otherservice ただちに規約違反ということにはなりませんが、一般的にも無礼な振る舞いと考えられています。 既に別の場所で回答されている内容と重複する回答をあらためて書くのは無意味な手間だからです。 どうしてもマルチポストが必要なのであれば他にどこに投稿したのかを明示する、解決したのであれば他のサイトへの投稿もクローズするといった手順は守ってください。
guest

回答3

0

こういうのを試してみてはどうか.

C

1printf( "%c %c\n", 65, 97 );

投稿2021/09/07 03:04

fana

総合スコア11708

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fana

2021/09/07 03:07

何なら質問コードに書かれている値域について全部見てみたらいいよね.
guest

0

ベストアンサー

文字コードが97~122なら小文字です。32を引けば大文字になります。
文字コードが65~90なら大文字です。32を足せば小文字になります。

[追記] で、フツーこう↓書くよね:

C++

1// UPPERCASE <-> lowercase 2#include <cstdio> 3#include <cctype> 4 5int main() { 6 using namespace std; 7 8 int ch; 9 while ( (ch = getchar()) != EOF ) { 10 if ( islower(ch) ) putchar(toupper(ch)); 11 else if ( isupper(ch) ) putchar(tolower(ch)); 12 else putchar(ch); 13 } 14}

投稿2021/09/07 02:50

編集2021/09/07 06:13
episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/09/07 02:54

32を引けば大文字、32を引けば小文字になる理由がわかりません。
退会済みユーザー

退会済みユーザー

2021/09/07 03:54

わかりました!! ありがとうございます。
guest

0

またchに代入しているgetchar()は引き算など行ったとして返り値は何になるんですか?

もともとgetchar()数値を返します(man)。当然、数値なので演算もできます。

投稿2021/09/07 02:47

maisumakun

総合スコア145208

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問